將多筆記錄插入到具有識別列的表中時,取得新產生的識別值對於後續資料操作至關重要。本文探討如何在 Microsoft SQL Server 2005 中不使用遊標來實現此目的。
考慮以下場景:您有兩個表,表 A 具有識別列 (id)表B,其中包含相關資料。您希望將 B 表中的記錄插入到 A 表中,並取得對應的識別值來更新 B 表中的 NewId 欄位。
SQL Server 2005 透過 OUTPUT 子句提供了一個方便的機制在插入操作期間檢索產生的識別值。以下程式碼示範如何使用此功能:
DECLARE @output TABLE (id int) INSERT INTO A (fname, lname) OUTPUT INSERTED.id INTO @output SELECT fname, lname FROM B
此查詢會將表 B 中的記錄插入表 A 中,並將識別值儲存在名為 @output 的表變數中。表變數 @output 將包含帶有新產生的識別值的單列 (id),允許您檢索並使用它們進行進一步處理。
考慮範例表格和資料問題描述中提供。執行上述程式碼後:
-- Insert records into Table A and retrieve identity values DECLARE @output TABLE (id int) INSERT INTO A (fname, lname) OUTPUT INSERTED.id INTO @output SELECT fname, lname FROM B -- Display the identity values in the table variable SELECT * FROM @output
結果將是一個包含插入行的識別值的表:
id ------- 1 2 3
這些標識值可以用於更新NewId相應地在表B 中列出。
以上是如何在沒有遊標的 SQL Server 2005 中插入多筆記錄後檢索識別值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!