2011-10-12 23 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になりe。

ありがとうございます!

ジュリアン

+0

それがトリガーすることがありますか? – gbn

答えて

72

私のアプローチ:

  • GETDATE()の値でModDate列にデフォルトの制約を定義する - これは

  • がにAFTER UPDATEトリガを持っているINSERTケースを扱いますModDate列を更新する

  • 012以下のような

何か:

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