SQL で最後に追加された行の ID へのアクセス
データベース テーブルに新しいデータを挿入した後、多くの場合、新しい行の自動生成された ID を取得する必要があります。この記事では、一時テーブルの必要性を回避して、この ID を取得するためのいくつかの SQL メソッドを示します。
SCOPE_IDENTITY()
INT
または BIGINT
列が ID 列として設定されているテーブルの場合、SCOPE_IDENTITY()
は INSERT
ステートメントに続いて ID を効率的に取得します。 その方法は次のとおりです:
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT SCOPE_IDENTITY()</code>
これは、現在のスコープ内で最後に挿入された ID 値を返します (ネストされたトランザクションの影響を受ける可能性があります)。
@@IDENTITY
@@IDENTITY
は、最後に割り当てられた ID 値を保持するグローバル変数です。 次のように使用します:
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT @@IDENTITY</code>
ただし、@@IDENTITY
はすべてのスコープにわたる最後の ID 値を反映し、ネストされたトランザクション内の以前の挿入が含まれる可能性があります。 同じセッションで複数の挿入が発生した場合、誤った結果が生じる可能性があります。
IDENT_CURRENT()
IDENT_CURRENT()
は別のオプションを提供します。スコープやトランザクションに関係なく、特定のテーブルの ID 値を取得します。
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT IDENT_CURRENT('dbo.YourTable')</code>
IDENT_CURRENT()
は、ネストされたトランザクション内で複数の挿入がある場合でも、ID が指定されたテーブルからのものであることを保証します。
概要
データベース開発者は、最後に挿入された行 ID を取得するためのこれらのさまざまな方法を理解する必要があります。テーブル構造と操作のコンテキストに基づいて適切な方法を選択すると、正確な ID 取得が保証され、データの整合性が維持されます。
以上がSQLで最後に挿入された行IDを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。