这是详细的问题:
我想将源表 t1 中的数据填充到目标表 t2、t3 和 t4 中。现在,我在做什么,首先我插入 t2 为:
insert into t2(t2.t2Data0, t2.t2Data1)
select t1.t2Data0,t1.t2.Data1 from t1
现在,为了插入 t3 和 t4,我需要一些脚本,它可以从 t2 获取 ID col 的数据和从 t1 获取其余列数据。
任何答案将不胜感激。谢谢
这是详细的问题:
我想将源表 t1 中的数据填充到目标表 t2、t3 和 t4 中。现在,我在做什么,首先我插入 t2 为:
insert into t2(t2.t2Data0, t2.t2Data1)
select t1.t2Data0,t1.t2.Data1 from t1
现在,为了插入 t3 和 t4,我需要一些脚本,它可以从 t2 获取 ID col 的数据和从 t1 获取其余列数据。
任何答案将不胜感激。谢谢
如果我正确理解您的问题,在您将行插入 t2 后,您想使用它的标识字段来帮助填充 t3 和 t4?
如果是这样,您可以使用JOIN
:
INSERT INTO t3
SELECT t2.id, t1.t3Data0
FROM t1
INNER JOIN t2 ON t1.t2Data0 = t2.tdData0 AND t1.t2Data1 = t2.tdData1
INSERT INTO t4
SELECT t2.id, t1.t4Data0
FROM t1
INNER JOIN t2 ON t1.t2Data0 = t2.tdData0 AND t1.t2Data1 = t2.tdData1
insert t1
(c1, c2, c3, c4)
select coalesce(t2.c1, t3.c1, t4.c1)
, t2.c2
, t3.c3
, t4.c4
from t2
full outer join
t3
on t2.c1 = t3.c1
full outer join
t4
on t2.c1 = t4.c1
or t3.c1 = t4.c1
我还没有测试过,但我看到了类似的东西......在 t1 上插入触发器之后
a) 插入 t2 (插入 t2(t2.t2Data0, t2.t2Data1) select t1.t2Data0,t2.Data1 from t1 join in t1.id=inserted.id)
b) 选择作用域身份(选择@T2ID=SCOPE_IDENTITY()
c) 插入 t3(插入 t3(id, t3data0) select @T2ID, t.t3data0 from t1 join insert on t1.id=inserted.id)
d) 插入 t4 (插入 t4(id, t4data0) select @T2ID, t.t4data0 from t1 join 插入 t1.id=inserted.id)
CREATE TRIGGER trgName ON [t1]
FOR INSERT
AS
declare @T2ID int
insert into t2(t2.t2Data0, t2.t2Data1) select t1.t2Data0,t2.Data1 from t1 join inserted on t1.id=inserted.id
select @T2ID=SCOPE_IDENTITY()
insert into t3(id, t3data0) select @T2ID, t.t3data0 from t1 join inserted on t1.id=inserted.id
insert into t4(id, t4data0) select @T2ID, t.t4data0 from t1 join inserted on t1.id=inserted.id
end
当然,假设这个场景符合你的需求