ホームページ > データベース > mysql チュートリアル > SQLで最後に挿入された行IDを取得するにはどうすればよいですか?

SQLで最後に挿入された行IDを取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-13 13:21:43
オリジナル
452 人が閲覧しました

How to Retrieve the Last Inserted Row ID in SQL?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート