我正在设置一个简单的SQLite数据库,以便通过Python进行访问。到目前为止,我有一个基本表和几个触发器 - 我希望在添加新记录时有一个触发器更新字段列'date_added',而另一个触发器在稍后更新记录时更新列'date_updated' 。这是触发器的SQLite语法:
CREATE TRIGGER add_contact AFTER INSERT ON contact_info
BEGIN
UPDATE contact_info SET date_added = DATETIME('NOW') WHERE pkid = new.pkid;
END;
CREATE TRIGGER update_contact AFTER UPDATE ON contact_info
BEGIN
UPDATE contact_info SET date_updated = DATETIME('NOW') WHERE pkid = new.pkid;
END;
'add_contact'触发器似乎工作正常......当我按计划通过sql INSERT命令添加新记录时它会触发。
问题似乎是'update_contact'触发器......当我通过sql UPDATE命令(按计划)更新记录和时,我同时添加新记录:< / p>
即。当我添加一条新记录时,我会在'date_added'和'date_updated'列中得到它:
2010-07-12 05:00:06|2010-07-12 05:00:06
当我更新该记录时,它会像这样改变:
2010-07-12 05:00:06|2010-07-12 05:14:26
我想我不知道为什么UPDATE触发器也会在INSERT上触发?
TIA,
蒙
编辑添加:有关如何使其按预期工作的任何提示?
答案 0 :(得分:8)
避免原始问题的更好方法是使用DEFAULT ( DATETIME('NOW') )
表定义中date_added列的子句,而不是INSERT
触发器。
答案 1 :(得分:6)
您的INSERT触发器中有一个UPDATE。因此INSERT会导致更新。你已经用不同的触发器挂钩了。