【问题标题】:Transact-SQL update another cell of the updated rowTransact-SQL 更新更新行的另一个单元格
【发布时间】:2014-05-29 17:10:44
【问题描述】:

我正在尝试创建一个像这样工作的触发器:

  1. 我更新了一个 BIT 类型的单元格
  2. 触发器将日期单元格设置为当前日期

SQL:

UPDATE OrderDB.dbo.Orders SET DateCompleted = GETDATE();

这会将所有日期更新为当前日期,但这并不是很酷。 :) 我想更新当前行。

CREATE TRIGGER dateTrigger ON [dbo].[Orders] AFTER UPDATE AS
<the part i have no idea about>

感谢您的帮助!

【问题讨论】:

    标签: sql-server database tsql triggers


    【解决方案1】:

    当您对更新事件使用触发器时,两个虚拟表 deletedinserted将包含更改的行(删除的保留更新前和插入的保留更新后),并且在您的触发器中您可以引用它们,并且如果您有某种方法来唯一标识行(如主键 - 在这种情况下可能是 OrderID?),您可以加入 insertedtable 以确定要更新 DateCompleted 字段的行。

    这样的事情可以做到:

    CREATE TRIGGER dateTrigger ON [dbo].[Orders] AFTER UPDATE AS
    IF ( UPDATE (status) )
    BEGIN
      UPDATE [dbo].[Orders] SET DateCompleted = GETDATE() 
      FROM [dbo].[Orders]
      INNER JOIN inserted ON [dbo].[Orders].[OrderID] = inserted.[OrderID]
    END;
    

    请注意,此触发器会检查名为status 的列是否已更新,如果您更新任何其他列,它将不会触发。

    【讨论】:

    • 你帮了我很多忙!谢谢!我一直在网上阅读,但到处都看到了很多非常复杂的例子。再次感谢。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多