2015-06-22 6 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? Не найдено в документации, а после поиска в Google не найдено и хорошего решения.

+2

SQL Server не делает триггеры уровня строки поддержки –

+1

Если вы действительно в них нуждаетесь, вы должны работать со курсорами: http://stackoverflow.com/questions/5805413/how-can-i-get-a-trigger-to-fire-on-each-inserted- рядный д uring-a-insert-in-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)

Смежные вопросы