Sql server 2008 r2 在SQL中插入多条记录并更新标识列
我必须在一个表中插入多条记录,同时在另一个表中插入第一个表的标识列。我可以这样做吗 编辑 “StudentSujects”表中的StudentID是第一个表“StudentMaster”的标识列Sql server 2008 r2 在SQL中插入多条记录并更新标识列,sql-server-2008-r2,Sql Server 2008 R2,我必须在一个表中插入多条记录,同时在另一个表中插入第一个表的标识列。我可以这样做吗 编辑 “StudentSujects”表中的StudentID是第一个表“StudentMaster”的标识列 INSERT INTO StudentMaster ( StudentName ) S
INSERT INTO StudentMaster
(
StudentName
)
SELECT StudentName
FROM OPENXML(@hDoc,'/XML/Students')
WITH( StudentName varchar(100) 'StudentName')
I am inserting multiple records in to the first table using the above query.I the mean time i have to insert the identity column of each row in to the second table.
您可以使用将INSERT
操作中的多个列/行输出到表变量中
假设要插入的表中有一个名为ID
的IDENTITY
列,则可能会有如下代码:
DECLARE @InsertedData TABLE (NewID INT, SomeOtherColumn.....)
INSERT INTO dbo.YourTable(Col1, Col2, ..., ColN)
OUTPUT INTO @InsertedData(NewID, SomeOtherColumn) Inserted.ID, Inserted.OtherColumn
VALUES(Val11, Val12, ..., Val1N),
(Val21, Val22, ..., Val2N),
....
(ValM1, ValM2, ..., ValMN)
当然,您需要有一些东西,使您能够识别第二个表中要插入哪个值的行-这完全取决于您的情况(您在问题中没有对此提供任何解释)
但基本上,使用
OUTPUT
子句,您可以捕获所需的任意多的信息,包括新分配的IDENTITY
值,这样您就可以根据这些信息进行第二次插入。发布表结构、预期数据和您迄今为止尝试的内容
DECLARE @InsertedData TABLE (NewID INT, SomeOtherColumn.....)
INSERT INTO dbo.YourTable(Col1, Col2, ..., ColN)
OUTPUT INTO @InsertedData(NewID, SomeOtherColumn) Inserted.ID, Inserted.OtherColumn
VALUES(Val11, Val12, ..., Val1N),
(Val21, Val22, ..., Val2N),
....
(ValM1, ValM2, ..., ValMN)