批次插入記錄並擷取無遊標的識別值
在表中插入多筆記錄是資料庫程式設計中的常見任務。特別是當將資料從一個表複製到另一個表時,希望獲得為新記錄產生的識別值。在這方面,Microsoft SQL Server 2005 提供了使用 OUTPUT 子句的有效解決方案。
考慮到提供的程式碼片段,其中資料從表B 插入表A:
Create Table A (id int identity, Fname nvarchar(50), Lname nvarchar(50)) Create Table B (Fname nvarchar(50), Lname nvarchar(50), NewId int) Insert into A(fname, lname) SELECT fname, lname FROM B
To檢索表A 中新插入記錄的識別值,我們可以採用以下技術:
使用OUTPUT 子句
OUTPUT子句允許我們檢索在插入、更新或刪除操作期間產生的值。在這種情況下,我們可以使用它來捕獲插入行的標識值。
DECLARE @output TABLE (id int) Insert into A (fname, lname) OUTPUT inserted.ID INTO @output SELECT fname, lname FROM B
透過建立表格變數(@output)並指定 OUTPUT insert.ID 表達式,我們指示查詢將插入記錄的識別值傳回@output。
查詢表格變數
插入操作完成後,我們可以查詢@output表變數來取得識別值:
select * from @output
這將顯示一個只有一列(id )包含新插入記錄的識別值。如果需要,這些值可以用於更新表 B 中的對應記錄。
以上是在沒有遊標的SQL Server中批次插入記錄後如何檢索識別值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!