[英]How can I insert multiple row data into two tables simultaneously
Let's say, I've 3 tables A, B and C with following structure. 假设,我有3个表A,B和C,其结构如下。
Table-A 表A
ID - (int) - PrimaryKey - Identity(auto-generated)
DeptCode - (int)
Table-B 表B
ID - (int) - PrimaryKey - Identity(auto-generated)
Data1 - varchar
AID - Foreign Key from Table-A
Table-C 表C
ID - (int) - PrimaryKey - Identity(auto-generated)
Data2 - varchar
Data3 - varchar
BID - Foreign Key from Table-B
My Question : How to insert data in 'Table-B' for all records where "DeptCode=101" in 'Table-A' and corresponding to each newly inserted data in 'Table-B' insert 1 row data in 'Table-C' - In Single query 我的问题 :如何在“表A”中“ DeptCode = 101”并与“表B”中每个新插入的数据相对应的所有记录的“表B”中插入数据,在“表C”中插入1行数据'- 在单个查询中
The problem can be broken down into two parts, inserting multiple row data in 'Table-B' from 'table-A' where criteria is satisfied. 该问题可以分为两部分,即在满足条件的情况下从“表A”中的“表B”中插入多行数据。 It can be done using following script. 可以使用以下脚本来完成。
INSERT INTO [TableB] ([Data1]) SELECT NEWID() FROM TableA WHERE [DeptCode] = 101;
For 1 newly added row in Table-B, data can be added to 'Table-C' using following query; 对于表B中的1个新添加的行,可以使用以下查询将数据添加到“表C”中; not sure how the two queries can be merged - for all the records from 'Table-A' 不知道如何合并两个查询-对于“表A”中的所有记录
BEGIN TRANSACTION
DECLARE @DataID int;
INSERT INTO Table2 ([Data1]) VALUES (NewID());
SELECT @DataID = scope_identity();
INSERT INTO Table3 VALUES ('some data', 'some more data', @DataID);
COMMIT
You can use output
clause to manage multiple inserted rows. 您可以使用output
子句来管理多个插入的行。 Something like this. 这样的事情。
DECLARE @ids table (DataID int);
BEGIN TRANSACTION
INSERT INTO [TableB] ([Data1])
output inserted.id into @ids --collect identity id's
SELECT NEWID() FROM TableA WHERE [DeptCode] = 101;
INSERT INTO Table3
select 'some data', 'some more data', DataID
from @ids;
COMMIT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.