我需要在Table1中为Table2中的每一行插入行。
此外,我需要在Table1中为每个新插入的行插入一个带有插入记录ID的新行。
我的脚本如下:
DECLARE @Id INT;
BEGIN TRAN
BEGIN TRY
INSERT INTO dbo.Table1(UN_ID, AT_ID, AA_SUM, AA_START_DATE, AA_END_DATE, WR_ID)
SELECT
116,
3,
100,
'20170501',
'20170601',
WR_ID
FROM Table2
SELECT @Id = SCOPE_IDENTITY()
INSERT INTO dbo.Table3 VALUES (@Id, 10)
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
但是这个脚本只在Table3中插入一行。
如何在Table3中插入Table1中每个新插入的行?
编辑:表1具有自动递增的主键ID。该ID应插入表3中。
答案 0 :(得分:1)
这可以使用如下的输出子句来完成,然后声明一个表变量与表3具有相同的结构。
declare @tbl3 table(id int)
INSERT INTO dbo.Table1(UN_ID, AT_ID, AA_SUM, AA_START_DATE, AA_END_DATE, WR_ID)
output Inserted.ID into @tbl3
SELECT
116,
3,
100,
'20170501',
'20170601',
WR_ID
FROM Table2
insert into dbo.table3
select id,10 from @tbl3