0

我必须将多条记录插入到一​​个表中,同时将第一个表的标识列插入到另一个表中。我可以避免循环吗?

已编辑

   i have two tables named StudentMaster and StudentSujects.

  First Table structure is (StudentID int Identity(1,1),StudentName varchar(100))

  Second table structure is (SubjectID int Identity(1,1),StudentID int,SubjectName varchar(100)).

“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.
4

1 回答 1

1

您可以使用该OUTPUT子句将操作中的多个列/行输出INSERT到表变量中。

假设您要插入的表有一个IDENTITY名为 的列ID,您可以编写如下代码:

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值,以便您可以根据该信息进行第二次插入。

于 2013-08-17T10:15:46.670 回答