Sql 我需要将插入表中的数据提取到两个表中
我需要提取插入到一个表中的数据,提取插入到上一个表中的数据,然后插入到另一个表中Sql 我需要将插入表中的数据提取到两个表中,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要提取插入到一个表中的数据,提取插入到上一个表中的数据,然后插入到另一个表中 create table tab1 (id bigint identity(1,1), col_1 varchar(4)) create table tab2 (id bigint identity(1,1), col_1 varchar(4), id_tab1 bigint) create table tab3 (id bigint identity(1,1), col_1 varchar(4), id_tab2
create table tab1 (id bigint identity(1,1), col_1 varchar(4))
create table tab2 (id bigint identity(1,1), col_1 varchar(4), id_tab1 bigint)
create table tab3 (id bigint identity(1,1), col_1 varchar(4), id_tab2 bigint)
create table tab4 (id bigint identity(1,1), col_1 varchar(4), id_tab3 bigint)
insert into tab1 (col_1)
values ('AAAA'),('BBBB'),('CCCC')
insert into tab2 (col_1, id_tab1)
output inserted.col_1, inserted.id into tab3 (col_1, id_tab2)
--I NEED DO: OUTPUT FROM TAB3 INTO TAB4
output inserted.tab3.col_1, inserted.tab3.id into tab4 (col_1, id_tab3)
select col_1, id
from tab1
output
子句需要显式的INSERT
。因此,请使用临时表:
declare @t2ids table (col_1 varchar(4), id_tab2 int);
insert into tab2 (col_1, id_tab1)
output inserted.col_1, inserted.id into @t2ids (col_1, id_tab2);
declare @t3ids (col1 varchar(4), id_tab3);
insert into tab3 (col1, id_tab2)
output inserted.col_1, inserted.id into @t3ids (col_1, id_tab3)
select col_1, id_tab2
from @t2ids;
insert into tab4 (col_1, id_tab3)
select col_1, id_tab3
from @t3ids;
您似乎试图实现一个-意味着插入到第一个表中会自动将默认值插入到相关表中,并从该表插入到下一个相关表中,依此类推(直到tab4)。
对于这样的事情,我将使用触发器而不是output子句—在每个表上创建一个insert触发器,将相关记录插入到下一个表中:
create trigger trg_tab2_insert on tab2 for insert
as
insert into tab3(col_1, id_tab2)
select col_1, id
from inserted
然后
create trigger trg_tab3_insert on tab3 for insert
as
insert into tab4(col_1, id_tab3)
select col_1, id
from inserted
请注意,要使其工作,应启用(这是SQL Server中的默认状态)您不能将其作为一个脚本运行吗 例如script.sql:
insert into tab2 (col_1,id_tab1) select col_1,id from tab1
insert into tab3 (col_1,id_tab2) select col_1,id from tab2
insert into tab4 (col_1,id_tab3) select col_1,id from tab3
我不会动扳机我知道我可以这样做,但我愿意做任何事one@VirtualCom . . . 这回答了你的问题。这是你需要的吗?我想把所有的事情都做在一起。目前我一分为二。。