はじめに
本記事は、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を利用しているエンジニアの参考になれば、幸いです。