2015-06-22 100 views
0
create table t1(col int); 
create table t2(col int); 


CREATE TRIGGER tr 
ON t1 
AFTER INSERT 
as 
    begin 
    INSERT INTO t2(col) values(1) 
end; 

-- tables and trigger created 

INSERT INTO t1(col) values(1), (2) 

當我運行此插入查詢時,在表t2中插入事件只發生一次。如何在SQL Server中爲每行創建觸發器

需要FOR EACH ROW聲明在觸發器中,但如何使這在SQL Server?沒有在文檔中找到,並在谷歌搜索後,也沒有找到一些好的解決方案。

+2

SQL Server不支持行級觸發 –

+1

如果你真的需要它們,你必須使用遊標:http://stackoverflow.com/questions/5805413/how-can-i-get-a-trigger-to-fire-on-each-inserted-行d uring-an-insert-into-table –

+0

@a_horse_with_no_name:親愛的使用INSERTED表,你可以逐行工作。或者我不明白這個問題? –

回答

1

替換您:INSERT INTO t2(col) values(1)

在:

INSERT INTO t2(col) SELECT col FROM inserted

因爲在inserted表,你會發現插在你的觸發器(T1)鏈接表中的所有行