SQLiteでデータ更新(INSERT)時に自動で現在の時刻を入れるSQL文を走らせる

● あるテーブルに対して 【UPDATE】(データ更新)が行われた時に「現在時刻をセットするSQL文」を実行するにはSQLiteのトリガー機能を使います。

・データ更新時に現在時刻をセットするトリガー

CREATE TRIGGER my_trigger AFTER UPDATE ON my_table
BEGIN
    UPDATE my_table SET modified_date = datetime('now', 'localtime') WHERE data_id = OLD.data_id ;
END;

テーブル my_table に何かしらの更新があった時に
my_table のカラム modified_date に現在時刻をセットするSQL文が自動的に走ります。

UPDATEINSERT,DELETE に変更すると、【INSERT】(データ登録)、【DELETE】(データ削除)時にSQL文が実行 されるようになります。

・【AFTER】【BEFORE】

【AFTER】のところを【BEFORE】にするとテーブルの更新前に指定したSQL文が動きます。

・【OLD】と【NEW】

【OLD】はUPDATE と DELETE 時に有効です。
【NEW】はUPDATE と INSERT 時に有効です。
INSERT時に OLD.data_id とやるとエラーとなります。

・作成したトリガーの確認

SELECT * FROM sqlite_master WHERE type = 'trigger';

・トリガーの削除

DROP trigger my_trigger;

関連エントリー

No.961
02/01 13:58

edit

日付