はじめに

本記事は、SQL Serverにおいて、INSERT時に登録日時を、UPDATE時に更新日時を自動で登録する方法を示す。

INSERT時に登録日時を自動登録

対象のテーブルに対して、以下のSQLを実行することで、レコードの登録日時の自動登録が可能になる。

ALTER TABLE [].[] ADD DEFAULT (GETDATE()) FOR []

ADD DEFAULT はテーブルのカラムにデフォルト値を設定することができる。 GETDATE() はデータベースシステムのタイムスタンプを返しており、 ADD DEFAULT のデフォルト値に指定することで、レコードの登録日時を自動登録することができる。

UPDATE時に更新日時を自動登録

対象のテーブルに対して、以下のSQLを実行することで、レコードの更新日時の自動登録が可能になる。

CREATE TRIGGER []
ON TABLE
AFTER UPDATE
AS
BEGIN
    UPDATE TABLE
        SET [] = GETDATE()
	    WHERE [] IN (SELECT [] FROM inserted)
END

CREATE TRIGGER でレコードがUPDATEされたときに更新日時を自動登録するトリガーを作成することができる。

SELECT [プライマリーキー] FROM insertedのinsertテーブルには、INSERT ステートメントおよび UPDATE ステートメントの実行で影響を受けた行のコピーが格納されている。

上記のSQLを実行し、トリガーを作成することで、insertテーブルにレコードが存在するレコードが存在する場合に、更新日時を自動登録することができる。