下面是详细的问题: 在INSERT语句中需要帮助
我想从源表T1的数据填充到目标表T2,T3和T4。现在, 我在做什么,首先,我插入T2为:现在
insert into t2(t2.t2Data0, t2.t2Data1)
select t1.t2Data0,t1.t2.Data1 from t1
,插入在T3和T4,我需要一些脚本,可以从T2 和休息采取ID山坳数据来自t1的列数据。
任何答案将不胜感激。由于
下面是详细的问题: 在INSERT语句中需要帮助
我想从源表T1的数据填充到目标表T2,T3和T4。现在, 我在做什么,首先,我插入T2为:现在
insert into t2(t2.t2Data0, t2.t2Data1)
select t1.t2Data0,t1.t2.Data1 from t1
,插入在T3和T4,我需要一些脚本,可以从T2 和休息采取ID山坳数据来自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
感谢,Andomar, 嗯,我想我没有简要解释我的问题.... 总之编辑了这个问题.. – Prateek
我没有测试过,但我看到类似的...在T1 INSERT触发器是
一)插入到T2后(插入到t2(t2.t2Data0,t2.t2Data1)中选择t1.t2Data0,t2.Data1从t1插入t1.id = inserted.id上插入)
b)选择范围标识(select @ T2ID = SCOPE_IDENTITY()
C)插入到T3(插入到T3(ID,t3data0)选择@ T2ID,从t1 t.t3data0联接插在t1.id = inserted.id)
d)插入到T4(插入到T4( ID,t4data0)选择@ T2ID,从T1 t.t4data0联接插在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
当然,假设这种情况下对应于您的需求
是的,你的假设是绝对正确的。谢谢sgeddes ... :) – Prateek
@Prateek - np,很高兴我可以帮助! – sgeddes