2009-11-29 72 views
0

這裏是我的方法:如何根據上一個插入插入記錄?

PROCEDURE add_values 
AS 
BEGIN 

    INSERT INTO TABLE_A ... 
    SELECT t.id, t.name FROM TABLE_C ("This selection will return multiple records") 

END 

雖然TableA中插入,我想插入到用於其得到插入表A的特定記錄另一個表(表B)。

TableA和TableB中的列是不同的。在插入TableB之前調用函數是明智的 - 我想根據tableA中插入的id執行某些獲取和設置?

+0

使用觸發器... – 2009-11-29 07:28:17

+0

@邁克爾:爲什麼,當你可以運行在存儲過程中多個SQL語句? – 2009-11-29 07:39:39

回答

1

試試這個

輸入

declare @tblA table (id int,name varchar(20)) 
declare @tblB table (id int,name varchar(20)) 
declare @tblC table (id int identity,name varchar(20)) 
insert into @tblC 
    select 'name1' union all select 'name2' union all 
    select 'name3' union all select 'name4' union all 
    select 'name5' union all select 'name6' union all 
    select 'name7' union all select 'name8' union all 
    select 'name9' union all select 'name10' union all 
    select 'name11' union all select 'name12' union all 
    select 'name13' union all select 'name14' union all 
    select 'name15' union all select 'name16' union all 
    select 'name17' union all select 'name18' union all 
    select 'name19' union all select 'name20' 

查詢

insert @tblA 
output INSERTED.id, INSERTED.Name 
into @tblB 
select 
    id,name 
from @tblC 
where id % 2 = 0 

select * from @tblA 
select * from @tblB 

輸出: [對於這兩個表格中的& B]

ID名稱

2 name2 
4 name4 
6 name6 
8 name8 
10 name10 
12 name12 
14 name14 
16 name16 
18 name18 
20 name20 

基本上我將這些記錄到表A從表C,其ID是偶數。然後通過使用OUTPUT子句插入來自表A中的值表B

欲瞭解更多信息OUTPUT Clause

希望這是有道理

+0

雖然它在TableA中插入,但我想插入另一個表(TableB)中插入tableA中的特定記錄。注意:TableA和TableB中的列是不同的,在插入TableB之前調用函數是明智的,因爲我會喜歡根據tableA中插入的id來執行某些獲取和設置。 我想一次去做,插入tableA執行基於表A插入的id集,然後插入表B – kurozakura 2009-11-29 09:12:35

+0

執行插入表A.使用函數來執行表B的操作。然後使用MERGE或TABLE VALUED PARAMETER來完成任務。希望這回答 – 2009-11-29 10:28:35

0

您可以創建一個觸發器來做到這一點,如果這是你將數據插入到表中的唯一途徑。 (否則會在每次插入運行)

,或者你可以在光標這將使你與每個插入從選擇做迭代

(​​

0

最好的方法取決於你的表定義的細節和相關查詢。根據您的問題,也許是這樣的信息:

CREATE PROCEDURE add_values 
AS 
BEGIN 
    BEGIN TRANS 
    INSERT INTO TableA 
     SELECT id, name FROM TableC 
    INSERT INTO TableB 
     SELECT id, name FROM TableC 
    COMMIT 
END 
+0

雖然它插入TableA中,但我希望插入另一個表(TableB) 中插入到表A中的特定記錄 注意:TableA和TableB中的列是不同的,在插入前調用函數是明智的到TableB中,因爲我想根據tableA中插入的id執行某些獲取和設置。 – kurozakura 2009-11-29 09:11:19

+0

我上面的答案會將插入到表A中的完全相同的記錄插入到TableB中。沒有更具體的要求就很難提供更有意義的建議。如果你可以用特定的表格定義來更新你的問題,那麼這將有所幫助,你的意思是「某些獲取和設置的內容」等。 – RickNZ 2009-11-29 13:00:16