2009年1月9日金曜日

[SQL Server]レコードが更新されたら更新日時を勝手に更新する

あるテーブルに作成日時と更新日時があるとします。
で、こいつらを自動で更新する方法です。

作成日時の方はInsertが発生した際のみで登録するので、
こっちの方はCreate Tableの時に「DEFAULT (getdate())」を(MSSMSなら列のプロパティの規定値またはバインド)指定するだけ。

更新日時はトリガーを使います。(他に見つからない。。)
でこんな感じでとりあえずうまく行ってます。

CREATE TRIGGER trUpdateDateTimeMemberInfo ON MemberInfo
FOR UPDATE
AS
begin
update MemberInfo
set 更新日時 = GetDate()
where MemberId = (select MemberId from inserted)
end
return

サブクエリのinsertedっていうのは処理対象のレコードって意味っぽいです。
deletedっていうのもあるらしい。

1 件のコメント:

Unknown さんのコメント...

後から見る人のためにコメント。

トリガーは更新前の情報がDeletetedで渡ります。

変更は更新前を削除し、更新後を追加したって事です。