我從另一個表B插入多個記錄到表A中。有沒有辦法獲得表A的記錄的標識值並更新表b的記錄而不用做光標?如何插入多個記錄並獲取標識值?
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
我使用MS SQL Server 2005的
我意識到這是一個老問題,它指定了SQL Server 2005,但是它是第一個顯示2008年可用的MERGE語句的結果,以後應該提及那些尋求解決方案的人。 併入 TargetTable USING ( SELECT .... )AS源開 1 = 2 WHEN NOT然後再配 INSERT .... OUTPUT inserted.ID INTO 不是Temptable ( InsertedID ) – oldegreyg 2017-04-12 17:54:09
你不需要一個簡單的插入合併。合併對於插入/更新是很好的,但對於簡單的插入來說是過度的。安迪的輸出答案爲我工作,並幫助拿走索引鎖。 – CodeMonkeyForHire 2017-04-13 14:23:46
安迪歐文的答案是最好的。觸發器很笨拙,不適用於目標表上的任意操作,尤其是在目標是臨時目錄或中間目標時。 Darren的回答是錯誤的,如果你插入一組行,它們在目標表中的順序不一定與你的順序相同。德米特里的方式是不好的,因爲它需要一個循環周圍插入一行,這是一個慢性能明智的,總是使用集時,你可以。科裏的方式很糟糕,他解釋了爲什麼,「只要他們不衝突。」這將打開到星期六晚上c – clemahieu 2008-12-13 08:02:45