sqlite3是否支持自动更新'updated_on'datetime字段的触发器?

时间:2009-12-26 20:08:27

标签: sql sqlite

我有一张看起来像这样的表

user_id   |  name   |  created_on   |   updated_on
--------------------------------------------------
1         | Peter D | 1/1/2009      |

如果我插入或更新记录,我希望触发器使用datetime('now')更新updated_on字段。但是我找不到函数名来定位sqlite3中最近更新的行。有吗?

2 个答案:

答案 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;