我有以下声明:
INSERT INTO table1 (field1, FIELD2)
SELECT f1, f2 FROM table2 -- returns 20 rows
插入后,我需要知道 table1.ID 中生成的 ID 数组/表,即 INT IDENTITY
提前谢谢。
我有以下声明:
INSERT INTO table1 (field1, FIELD2)
SELECT f1, f2 FROM table2 -- returns 20 rows
插入后,我需要知道 table1.ID 中生成的 ID 数组/表,即 INT IDENTITY
提前谢谢。
使用OUTPUT子句(SQL2005 及更高版本):
DECLARE @IDs TABLE(ID int)
INSERT INTO table1(Field1, Field2)
OUTPUT inserted.ID into @IDs(ID)
SELECT Field1, Field2 FROM table2
如果您想确切知道 table2 中的哪些行在 table1 中生成了哪个 ID(并且 Field1 和 Field2 不足以识别它),您需要使用MERGE:
DECLARE @IDs TABLE(Table1ID int, Table2ID int)
MERGE table1 AS T
USING table2 AS S
ON 1=0
WHEN NOT MATCHED THEN
INSERT (Field1, Field2) VALUES(S.Field1, S.Field2)
OUTPUT inserted.ID, S.ID INTO @IDs(Table1ID, Table2ID)
采用SCOPE_IDENTITY()
SELECT SCOPE_IDENTITY()
http://msdn.microsoft.com/en-us/library/ms190315(v=sql.105).aspx