2013-07-14 162 views
1

下面是詳細的問題: Database diagram在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的列數據。

任何答案將不勝感激。由於

回答

2

如果我正確理解你的問題,您插入行到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 
+0

是的,你的假設是絕對正確的。謝謝sgeddes ... :) – Prateek

+0

@Prateek - np,很高興我可以幫助! – sgeddes

1
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 
+0

感謝,Andomar, 嗯,我想我沒有簡要解釋我的問題.... 總之編輯了這個問題.. – Prateek

1

我沒有測試過,但我看到類似的...在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 

當然,假設這種情況下對應於您的需求

+0

好主意,在t2表上有一個觸發器,然後使用魔法列(插入或刪除),在這種情況下插入。插入其他兩個表格(t3&t4).. – Prateek

+0

想一想,這不是一個好主意。因爲這隻有當你有一個交易時纔有效。如果你插入了多個條目,那麼這是行不通的。感謝upvote,無論如何:) – cleantone