QUOIT Blog

メモ:SQLiteでon update current_timestampを実現する

この記事は5年以上前の記事です。情報が古い場合がありますのでお気を付け下さい。

自分用のメモです。

<追記あり:2011/08/02>

[sqlfairy-developers] Questions on MySQL -> SQLite translation

このページにTriggerを使った解決方法が書いてあったんだけど、このTriggerの文章だとテーブルのデータ全てに対してUPDATEがかかっちゃう。

ので、書き換えたのがこちら。
ちなみに、IDは一意であるとする前提。

CREATE TRIGGER hoge_modified AFTER UPDATE on hoge FOR EACH ROW
BEGIN
 UPDATE hoge SET modified = current_timestamp WHERE ID = old.ID;
END;

まぁ、WHERE句を足しただけなんですけどね。

<追記:2011/08/02>
SQLiteではデフォルトでcurrent_timestampがUTCになってしまい、ローカルの時間になってくれません。
それを解決したのが下記。
ついでに不必要なFOR EACH ROWを取り除いてます。

CREATE TRIGGER hoge_modified AFTER UPDATE on hoge
BEGIN
 UPDATE hoge SET modified = DATETIME("now","localtime") WHERE ID = old.ID;
END;

Comments are closed.