触发后,在所有记录中将值增加 1,而不是唯一更新的记录



我希望下面的触发器仅在客户地址已更改的行中将 NOA 列更新 +1。

我运行查询并仅在一条记录中更新了客户地址,但 NOA 在所有 7 条记录中从 0 变为 1。如何?

create trigger track_updates
on CstmrEng.tblCustomer
after update
as
if (UPDATE(CustomerAddress))
update CstmrEng.tblCustomer
set NOA = NOA +1

您应该始终在触发器中使用inserted

像这样:

create trigger track_updates
on CstmrEng.tblCustomer
after update
as
begin            
if (UPDATE(CustomerAddress))
begin
update c
set NOA = c.NOA + 1
from CstmrEng.tblCustomer c join
inserted i
on c.customerId = i.customerId;  -- or whatever the primary key is
end;
end;

最新更新