2011-10-12 114 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