【问题标题】:Reference updated row for SQL Server trigger引用 SQL Server 触发器的更新行
【发布时间】:2010-03-08 14:38:15
【问题描述】:

我想始终更新数据库中更新行的值。

想象一下,我有一张包含名称和价格的表格 每次插入或更新一行时,我都想将价格降低一个固定的金额。

如何使用 SQL Server 2005 做到这一点?

我现在有类似的东西

CREATE TRIGGER LowerPriceOnInsert ON products
AFTER INSERT, UPDATE
AS
    IF UPDATE(ProductPrice)

【问题讨论】:

    标签: sql-server sql-server-2005 triggers


    【解决方案1】:

    好的,假设您想将价格降低 5 美分:

    UPDATE p
      SET price = price - 0.05
      FROM dbo.Products AS p
      INNER JOIN inserted AS i
      ON p.ProductID = i.ProductID;
    

    http://msdn.microsoft.com/en-us/library/ms191300.aspx

    【讨论】:

    • 它可以工作,但是,我不能再更改行的值了。我收到一条错误消息:更新或删除的行值要么不使行唯一,要么改变多行。虽然我只是使用管理工作室更改一排的价格。任何的想法?顺便说一句,无论如何都要为答案投票
    • 我通过删除 IF UPDATE(ProductPrice) 来修复它。非常感谢!
    • Henri,你的桌子上好像没有主键?你能在问题中显示实际的代码和表结构,或者开始一个新的问题吗?很难调试评论。 :-)
    猜你喜欢
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 2016-09-26
    • 2016-11-03
    相关资源
    最近更新 更多