0

Oracle では、シーケンスを使用して、テーブルの一意の識別子の値を生成していました。ストアド プロシージャでは、sequencename.nextval を呼び出して、その値を変数に割り当てます。その後、その変数をプロシージャの insert ステートメントとプロシージャの out パラメータに使用して、新しく生成された ID を .NET クライアントに配信できるようにします。

Teradataで同じことをしたいのですが、これを達成する唯一の方法は、順次インクリメントされる値を保持するテーブルを作成することだと考えています。ただし、理想的には、実際にデータベースに新しいレコードを作成することなく、ID 列の次の値に使用される値を取得できるようにしたいと考えています。

4

1 に答える 1

3

いいえ、Teradataではできません。Identify値は、実行されている操作のタイプに基づいて、解析エンジン(PE)またはAMPレベルのいずれかでキャッシュされるためです。IDENTITY私の理解では、DBC.IdColテーブルには、PEまたはAMPが必要とする値の次のバッチをシードするために使用される次の値が表示されます。

もう1つの解決策はIDENTITY、UPIでこの方法を使用しないようにすることです。論理主キーで分割されたウィンドウ集計関数をいつでも使用してROW_NUMBER()、代理キーの次の範囲の値をシードできます。

于 2012-07-30T21:02:06.297 に答える