オートインクリメント・カラムに値を割り当てます。オートインクリメントを使用して数を生成する代わりに、この関数を使用できます。
GET_IDENTITY( table_name [, number_to_allocate ] )
table_name テーブルの名前を指定する文字列。オプションで所有者名を含みます。
number_to_allocate ID に割り当てる値の開始値。デフォルトは 1 です。
UNSIGNED BIGINT
最も効率的な ID の生成方法はオートインクリメントまたはグローバル・オートインクリメントを使用する方法ですが、この関数は代替手段として提供されています。この関数は、テーブルにオートインクリメント・カラムが定義されていることを前提としています。テーブルのオートインクリメント・カラムの生成に使用可能な次の値を返し、他の接続がデフォルトでその値を使用しないように値を予約します。
テーブルが見つからない場合はエラーを返し、テーブルにオートインクリメント・カラムが存在しない場合は NULL を返します。複数のオートインクリメント・カラムがある場合は、最初に検出されたものが使用されます。
number_to_allocate は予約する値の数です。number_to_allocate に 1 より大きい値を指定すると、残りの値も予約されます。次回の割り当てでは、現在の数に number_to_allocate の値を加算した数が使用されます。これによって、アプリケーションは GET_IDENTITY 関数を頻繁に実行せずにすみます。
GET_IDENTITY 関数の実行後は COMMIT が不要のため、ローの挿入に使用するのと同じ接続を使用して呼び出すことができます。例に示すように、いくつかのテーブルの ID 値が必要な場合は、GET_IDENTITY 関数の呼び出しを複数持つ単一の SELECT を使用して取得できます。
GET_IDENTITY 関数は、非決定的関数です。以降、GET_IDENTITY 関数を呼び出すと異なる値が返される可能性があります。オプティマイザは、GET_IDENTITY 関数の結果をキャッシュしません。
非決定的関数の詳細については、関数のキャッシュを参照してください。
SQL/2003 ベンダ拡張。
次の文は、Customers テーブルのオートインクリメント・カラム (ID) に対して次に使用できる数値を返します。返された値とその後の 9 個の値が予約されます。
SELECT GET_IDENTITY( 'Customers', 10 ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |