如何在sql触发器中使用where子句?

时间:2017-10-29 20:51:05

标签: sql-server tsql

我正在尝试创建一个触发器,其中帐户余额会自动从事务表中更新,但我无法更新特定的表。我的触发器会更改每个客户的帐户余额。我想知道如何使用where子句使其成为客户特定的。这就是我所拥有的:

create trigger trig_one
on dbo.transactions
for insert, update, delete
as begin
    declare @amount int
    select @amount = (select amount from inserted)

    update dbo.account set balance = balance + @amount

end

请帮帮我。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以像这样构建查询:

update dbo.account
    set balance = balance + i.amount
    from dbo.account a join
         inserted i
         on i.accountid = a.accountid ;

(连接键是连接键应该是什么。)

当然,您需要对已删除的内容执行相同的操作。注意:这适用于要插入的多行。这很方便。您的版本会意外失败。