2011-10-12 116 views
38

修改日期这将是很好,知道如何创建一个触发器,它在我的SQL Server表自动更新modifiedDate柱:如何为自动更新创建触发器与SQL Server 2008

TimeEntry

Id (PK) 
UserId (FK) 
Description 
Time 
GenDate 
ModDate 

触发代码:

+ TR_TimeEntry_UpdateModDate() 
+ TR_TimeEntry_InsertGenDate() 

用于更新ModDate一个例子是NIC即

在此先感谢!

朱利安

+0

是否有是一个触发器? – gbn

回答

72

我的方法:

  • 上的GETDATE()的值ModDate列中定义的默认约束 - 这种处理INSERT情况

  • AFTER UPDATE触发更新ModDate

喜欢的东西:

CREATE TRIGGER trg_UpdateTimeEntry 
ON dbo.TimeEntry 
AFTER UPDATE 
AS 
    UPDATE dbo.TimeEntry 
    SET ModDate = GETDATE() 
    WHERE ID IN (SELECT DISTINCT ID FROM Inserted) 
+4

根据您的时区要求,还值得考虑'getUtcDate()'。 – Rory

+35

如果有人想知道,像我一样,是否会递归地调用它自己,那么通常会有一个RECURSIVE_TRIGGERS数据库选项,它可以防止像这样的触发器调用它自己。 http://msdn.microsoft.com/en-us/library/ms190739.aspx – Rory

+1

我没有明白。我应该'SET RECURSIVE_TRIGGERS'设置为'ON'或'OFF'来防止这种情况发生? – MarceloBarbosa