2013-04-25 68 views
1

我有一組值必須插入到兩個表中。輸入具有5行,我必須將這5行插入到表A中first.Table A有一個標識列。接下來,我必須將這5行插入表B中,並在表A中添加一個額外的列。 如何使用任何循環完成此操作? 任何幫助將非常有幫助。將多行插入到兩個表中避免循環

INSERT INTO TABLE_A(COL2,COL3) 
SELECT COL2,COL3 FROM #TEMP_TAB 

set @[email protected]@identity 
INSERT INTO TABLE_B(COLA,COLB,COLC) 
SELECT @identityval,COL2,COL3,COL4 FROM #TEMP_TAB 
+0

你能告訴我們你想出了讓SQL遠? – 2013-04-25 09:32:16

回答

0

您無法使用單個統計信息插入到多個表中。

你可以做的是建立在表A的INSERT觸發器,使得插入後會出現這種執行與插入到表A中值的身份將新的插件並把它插入表B.

+0

我不想插入一個go.I也不能使用觸發器,因爲這不會在任何時候發生。它是一個特例。 – Alivia 2013-04-25 09:53:07

0

這裏一個解決方案標識列的

取最大值從表TABLE_A
插入表TABLE_A
然後插入記錄的表-B從TABLE_A與身份,比去年最高身份更大的新紀錄。

感謝, 戈帕爾

0

你想要做什麼是不可能的。 您只能使用@@identity變量獲取最後一個插入的值。通過這種方式,可以將多個表添加到多個表中,而無需再次使用光標選擇剛插入的行。這種方法在一次插入多行時沒有用處。

documentation: 使用@@ identity全局變量檢索插入到IDENTITY列的最後一個值。每次插入或選擇嘗試向表中插入行時,@@標識的值都會發生更改。

這裏是一個插入一行的程序,你可以使用返回值來創建另一個表插入數據的引用:

create procedure reset_id as 
    set identity_insert sales_daily on 
    insert into sales_daily (syb_identity, stor_id) 
     values (102, "1349") 
    select @@identity 
select @@identity 

execute reset_id