[英]How to update specific row in datecolumn to date today after update on other column using after update trigger?
当使用T-SQL中的更新后触发器更新(未插入)Column CustomerProductID时,如何将Date列DateMod更新为今天的日期?
一些背景信息:表已经包含产品列表(键列Itemcode ),一旦收到CustomerProductID,它将特定行(产品)的列从NULL更改为整数值。 此更新是将行(产品)的DateMod列更新为今天的日期的触发器。 我正在使用SSMS 2008,并且具有类似以下代码的内容,它更改了整个日期列,而不是更新行的特定日期字段:
CREATE TRIGGER trigger_name
ON Table1
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE (CustomerProductID) BEGIN
Update Table1
SET DateMod=GETDATE()
END
END
我已经阅读了一些使用old.value和new.value或使用where存在的解决方案(从插入/更新中选择)的解决方案,但是它如何工作? 如果两种方法都可行,在这种情况下哪一种是最有利的? 非常感谢!
我更喜欢将其作为before update
触发器(在更新后的触发器中进行更新会提示无限循环,在某些数据库中是不允许的)。 但是SQL Server不支持。
无论如何,正确的语法是使用inserted
联接回原始表:
CREATE TRIGGER trigger_name
ON Table1
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE(CustomerProductID) BEGIN
Update t1
SET DateMod = GETDATE()
FROM Table1 t1 join
Inserted i
ON Table1.PrimaryKeyColumn = i.PrimaryKeyColumn
END
END
更改代码,使PrimaryKeyColumn
是正确的主键列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.