Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 言語の要素 » 変数 » グローバル変数

 

@@identity グローバル変数

@@identity 変数には、IDENTITY カラムまたは DEFAULT AUTOINCREMENT カラムに挿入された最新の値が設定されます。最新の挿入が、このようなカラムがないテーブルに対して行われた場合は 0 になります。

@@identity の値は、接続に固有であり、テーブルにローが挿入されるたびに増分されます。文が複数のローを挿入した場合、@@identity には最後に挿入されたローの IDENTITY 値が反映されます。文が IDENTITY カラムがないテーブルに影響を及ぼすと、@@identity に 0 が設定されます。

INSERT または SELECT INTO 文の実行に失敗したり、@@identity の値が保持されるトランザクションのロールバックがあっても、@@identity の値には影響を及ぼしません。挿入された文のコミットが失敗しても、@@identity には IDENTITY カラムに最後に挿入された値が保持されます。

@@identity とトリガ

挿入の実行によって、参照整合性アクションが起きたり、トリガが起動されたりすると、@@identity はスタックのように動作します。たとえば、テーブル T1 (IDENTITY カラムまたは AUTOINCREMENT カラムがあるテーブル) に対する挿入によってトリガが起動し、テーブル T2 (IDENTITY カラムまたは AUTOINCREMENT カラムがあるテーブル) にローが 1 つ挿入された場合、挿入を実行したアプリケーションやプロシージャには、T1 に挿入された値が返されます。トリガ内では、T2 への挿入前には T1 の値が、挿入後には T2 の値が @@identity に入ります。トリガが両方の値にアクセスする場合、トリガはそれらの値をローカル変数にコピーできます。