Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 r2 在SQL中插入多条记录并更新标识列_Sql Server 2008 R2 - Fatal编程技术网

Sql server 2008 r2 在SQL中插入多条记录并更新标识列

Sql server 2008 r2 在SQL中插入多条记录并更新标识列,sql-server-2008-r2,Sql Server 2008 R2,我必须在一个表中插入多条记录,同时在另一个表中插入第一个表的标识列。我可以这样做吗 编辑 “StudentSujects”表中的StudentID是第一个表“StudentMaster”的标识列 INSERT INTO StudentMaster ( StudentName ) S

我必须在一个表中插入多条记录,同时在另一个表中插入第一个表的标识列。我可以这样做吗

编辑 “StudentSujects”表中的StudentID是第一个表“StudentMaster”的标识列

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)