SQL:检索插入的行ID数组/表

时间:2013-05-14 09:17:04

标签: sql sql-server database

我有以下声明:

INSERT INTO table1 (field1, FIELD2)
SELECT f1, f2 FROM table2 -- returns 20 rows
插入后

我需要知道table1.ID中生成的ID的数组/表是INT IDENTITY

提前完成。

2 个答案:

答案 0 :(得分:4)

使用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)

答案 1 :(得分:0)

使用SCOPE_IDENTITY()

SELECT SCOPE_IDENTITY()

http://msdn.microsoft.com/en-us/library/ms190315(v=sql.105).aspx