存取 SQL 中最近新增的行的 ID
將新資料插入資料庫表後,您經常需要檢索新行自動產生的 ID。本文展示了獲取此 ID 的幾種 SQL 方法,從而避免了對臨時表的需要。
SCOPE_IDENTITY()
對於將 INT
或 BIGINT
欄位設定為識別列的表,SCOPE_IDENTITY()
可有效擷取 INSERT
語句後的 ID。 方法如下:
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT SCOPE_IDENTITY()</code>
這將傳回目前範圍內最近插入的身份值(可能受到巢狀事務的影響)。
@@IDENTITY
@@IDENTITY
是一個全域變量,保存最後分配的識別值。 像這樣使用它:
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT @@IDENTITY</code>
但是,@@IDENTITY
反映了所有範圍內的最後一個身分值,可能包括在巢狀事務中較早的插入。 如果在同一會話中發生多次插入,這可能會給出不正確的結果。
IDENT_CURRENT()
IDENT_CURRENT()
提供了另一種選擇。它會檢索特定表的識別值,無論範圍或事務如何:
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT IDENT_CURRENT('dbo.YourTable')</code>
IDENT_CURRENT()
保證 ID 來自指定的表,即使在巢狀事務中進行多次插入也是如此。
總結
資料庫開發人員需要了解這些不同的方法來檢索最後插入的行 ID。根據您的表格結構和操作上下文選擇正確的方法,可確保準確的 ID 檢索並保持資料完整性。
以上是如何在 SQL 中檢索最後插入的行 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!