はじめに

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

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

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

ALTER TABLE [テーブル名] ADD DEFAULT (GETDATE()) FOR [登録日時のカラム名]

ADD DEFAULT はテーブルのカラムにデフォルト値を設定することができます。

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

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

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

CREATE OR ALTER TRIGGER [トリガー名]
ON [テーブル名]
AFTER UPDATE
AS
BEGIN
    UPDATE [テーブル名]
        SET [更新日時のカラム名] = GETDATE()
	    WHERE [プライマリキー] IN (SELECT [プライマリーキー] FROM inserted)
END

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

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

上記のSQLを実行すると、inserted テーブル内に存在するレコードを更新する際に、更新日時を自動登録するトリガーが作成されます。

おわりに

本記事は、SQL Serverにおいて、INSERT時に登録日時を、UPDATE時に更新日時を自動で登録する方法を紹介しました。
本記事が、SQL Serverを利用しているエンジニアの参考になれば、幸いです。

本サイトへのご意見、お問い合わせなどありましたらこちらからご連絡下さい。 お問合せフォーム