我有一张看起来像这样的表
user_id | name | created_on | updated_on
--------------------------------------------------
1 | Peter D | 1/1/2009 |
如果我插入或更新记录,我希望触发器使用datetime('now')更新updated_on字段。但是我找不到函数名来定位sqlite3中最近更新的行。有吗?
答案 0 :(得分:26)
CREATE TRIGGER your_table_trig AFTER UPDATE ON your_table
BEGIN
update your_table SET updated_on = datetime('now') WHERE user_id = NEW.user_id;
END;
答案 1 :(得分:0)
您可以指定一个触发器来在行更改时更新行的 updated_on
列,但是,更改会再次调用同一个触发器,最终会出现错误 too many levels of trigger recursion
。< br/>
为了避免这种情况,您可以指定要触发触发器的列,当然您需要排除 updated_on
。
CREATE TRIGGER your_table_trig
AFTER UPDATE OF ID,
user_id,
name,
created_on ON your_table
FOR EACH ROW BEGIN UPDATE your_table
SET updated_on = DATETIME ('NOW')
WHERE rowid = new.rowid ; END;