2

我有以下声明:

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

插入后,我需要知道 table1.ID 中生成的 ID 数组/表,即 INT IDENTITY

提前谢谢。

4

2 回答 2

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)
于 2013-05-14T09:27:57.290 回答
0

采用SCOPE_IDENTITY()

SELECT SCOPE_IDENTITY()

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

于 2013-05-14T09:18:35.353 回答