如果我写这个:
update School set Name = Name where Id = 733021
我的触发器声明像这样工作:
[dbo].[SchoolUpdateSomething] ON
[dbo].[School] AFTER INSERT, UPDATE
AS
DECLARE @N int, @SchoolType nvarchar(255)
但如果我这样做
update School set Name = Name
它不会触发所有行的触发器。为什么呢?
我在更新行时也看到了同样的问题,例如通过更新另一个表中的学校名称来命名:
UPDATE School
SET Name = usl.Name
FROM School s INNER JOIN UpdatedSchoolList usl
ON s.Id = usl.Id COLLATE DATABASE_DEFAULT
卡尔
答案 0 :(得分:1)
http://bytes.com/topic/sql-server/answers/80432-statement-level-vs-row-level-triggers
您必须自己对INSERTED伪表中的行执行操作。