SQL Server では、テーブル定義の変更の最終更新日時はシステムテーブルに記録されるが、
INSERT、UPDATE、DELETEの最終更新日時は記録されていないので、
トリガーで最終更新日時を記録する方法。
最終更新ログテーブルの作成
CREATE table CHANGELOG( TableName sysname NOT NULL, ModDatetime datetime NULL CONSTRAINT PK_CHANGELOG PRIMARY KEY CLUSTERED ( [TableName] ) )
CHANGELOGに全テーブルのレコード作成
INSERT CHANGELOG SELECT name,NULL FROM sys.tables
トリガーの作成(各テーブルごとに作成)
トリガーの定義部分のみ各テーブル名に変更すれば、SQLの内容は変更しなくてもいいようにしています。
CREATE TRIGGER tr_CHANGELOG_UserMaster ON UserMaster FOR INSERT, UPDATE, DELETE AS BEGIN SET NOCOUNT ON DECLARE @tablename sysname SELECT @tablename = object_name(parent_id) FROM sys.triggers WHERE object_id = @@PROCID UPDATE CHANGELOG SET ModDatetime = GetDate() WHERE TableName=@tablename END