トリガーがオンに設定されているテーブルEmployeeSalaryHistoryの更新時に、監査履歴テーブル ( ) に新しいレコードを挿入することになっているトリガーがあります。Employees
テーブル内のすべての行が更新される場所で実行すると、更新される行の数よりも多くの回数トリガーが呼び出されますUPDATE。Employees
たとえば、Employeesテーブルに3 つの行がある場合、 INSERT9 回発生します。
/*This UPDATE will cause the trigger to fire more than the number of rows in the Employees table.*/
UPDATE Employees SET Salary = Salary * 2
/* supposed to be fired whenever the salary of an employee is updated */
CREATE TRIGGER [dbo].[EmployeesUpdateSalary] ON [dbo].[Employees]
AFTER UPDATE
NOT FOR REPLICATION
AS
BEGIN
INSERT INTO EmployeeSalaryHistory(EmployeeID, NewSalary, OldSalary)
SELECT I.EmployeeID, I.Salary, D.Salary
From inserted I, deleted D
WHERE I.Salary <> D.Salary
END