1
我有以下聲明:SQL:檢索插入的行ID陣列/表
INSERT INTO table1 (field1, FIELD2)
SELECT f1, f2 FROM table2 -- returns 20 rows
插入後,我需要知道在table1.ID生成的ID是INT IDENTITY
的陣列/表thanx提前。
我有以下聲明:SQL:檢索插入的行ID陣列/表
INSERT INTO table1 (field1, FIELD2)
SELECT f1, f2 FROM table2 -- returns 20 rows
插入後,我需要知道在table1.ID生成的ID是INT IDENTITY
的陣列/表thanx提前。
使用OUTPUT條款(SQL2005及以上):
DECLARE @IDs TABLE(ID int)
INSERT INTO table1(Field1, Field2)
OUTPUT inserted.ID into @IDs(ID)
SELECT Field1, Field2 FROM table2
如果你想知道哪些產生從表2的行其ID在表1 (並且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
SELECT SCOPE_IDENTITY()返回最後一個ID,但我需要所有ID(對於當前示例,我必須有20個新ID)! – armen 2013-05-14 09:25:15