SQLiteのトリガとか
import sqlite3
はPython2.5しか受け付けないハズなので、2.4でも動作するように以下のようにしました(ただし動作確認してません)。2.4ではpysqlite2が必要です。
try: import sqlite3 as sqlite except: import pysqlite2 as sqlite
それからSQLiteにトリガがあることを知ったので、タイムスタンプの更新に使えるのではないかと思い文法を調べてみたのですが、トリガ内で自分自身のフィールド値を変更する方法がわかりませんでした。ダメ元で以下のようなトリガを書いてみましたが、やはり通りませんでした。
create trigger t_node_bef_ins before insert on t_node begin new.create_date=datetime('now', 'localtime'); end
やはりSQLiteのトリガではnewは参照専用のようです。Firebirdだとこれでいけるんですけどね。というわけで以下のようにしました。
create trigger t_node_aft_ins after insert on t_node begin update t_node set create_date=datetime('now', 'localtime') where id=new.id; end
この例ではこれでOKなんですが、update時にこれをやるときっと無限ループになると思われます。どうするんだろ〜。
rev.50でコミットしました。