我認爲這樣做的第一種方法是在表上使用AFTER INSERT TRIGGER
,捕獲插入的整個行集,並從那裏獲取身份。
編輯當然,你也可以通過捕捉OUTPUT(DOH)
http://msdn.microsoft.com/en-us/library/ms177564.aspx
這裏是工作示例,因爲你沒有提供的樣本數據做到這一點,我創建了自己防敏感和ETVault表,所以在一個全新的數據庫中使用這個例子。
DROP TABLE Allergy
GO
CREATE TABLE Allergy
(
ID INTEGER IDENTITY (1, 1), NAME VarChar (20), Category VarChar (20), Composition VarChar (20)
)
GO
DROP TABLE ETVault
Go
CREATE TABLE ETVault
(
ID INTEGER IDENTITY (1, 1), Strain INT, NAME VarChar (20), Category VarChar (20), Composition VarChar (20)
)
GO
INSERT INTO dbo.ETVault
(Strain, NAME, Category, Composition)
VALUES
(1, '1', '1', '1'),
(2, '1', '1', '1'),
(3, '1', '1', '1'),
(4, '1', '1', '1'),
(5, '1', '1', '1'),
(6, '1', '1', '1'),
(7, '1', '1', '1'),
(8, '1', '1', '1')
DECLARE @CaptureTable TABLE (ID INT)
INSERT INTO dbo.Allergy
(NAME, Category, Composition)
OUTPUT INSERTED.Id INTO @CaptureTable
SELECT dbo.ETVault.NAME, Category, Composition
FROM dbo.ETVault
Where Strain In (6, 2, 4)
SELECT * FROM @CaptureTable
它給你的輸出
(8 row(s) affected)
(3 row(s) affected)
ID
-----------
1
2
3
(3 row(s) affected)
[插入身份的SQL服務器列表(的
可能重複http://stackoverflow.com/questions/4619343/sql-server-list-of-插入器身份) –