У меня есть таблица MyTable с триггером, определенным так:
ALTER TRIGGER [MyTableInsertDeleteUpdate]
ON [dbo].[MyTable]
AFTER INSERT,DELETE,UPDATE
AS
DECLARE @id int;
BEGIN
SELECT @id = ins.id FROM inserted ins;
IF (@id IS NOT NULL)
BEGIN
-- insert a new record to audit table
PRINT 'inserted/updated id: ' + CAST(@id AS VARCHAR);
END
END
Я понимаю, что если обновляется более одной строки, как это,
UPDATE MyTable SET name = 'test rows' WHERE id in (1, 2, 3);
тигр вызывается только один раз, и обновляется только первый из [вставлен]. На самом деле, [вставлено] может иметь более одной строки (3 в этом случае, если существуют идентификаторы 1, 2,3). Другими словами, триггер не срабатывает в каждой строке. Это верно?
Я использую Microsoft SQL Server 2005.