我有一个触发器应该在更新Employees
表时将新记录插入审计历史记录表(EmployeeSalaryHistory
),触发器设置为开启。触发表更新触发超过更新的行数
如果我在Employees
上执行UPDATE
,表中的所有行都被更新,则触发器被调用的次数会多于正在更新的行数。
例如如果Employees
表中有三行,则INSERT
发生9次。
/*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
也许发布您的解决方案......作为*附加编辑*到您的原始文章.......所以其他人可以看到你最终做了什么。保持您的原始文本“完整”,以便清楚地看到原始问题。 – granadaCoder