使用WHERE子句为表创建触发器

时间:2015-08-09 14:08:53

标签: sqlite triggers

我昨天开始使用SQLite并尝试了一些东西。我搜索谷歌和stackoverflow的答案,但无法找到任何:(我已经创建了一个数据库,并在里面创建了几个表收入费用然后我插入了20个条目并试图触发记录对5到10之间的条目所做的任何更改。但是出现了一条错误消息Error: near "where": syntax error

sqlite> CREATE TABLE expense(
...> ID INTEGER PRIMARY KEY AUTOINCREMENT,
...> Category text,
...> Amount real
...> );

sqlite> CREATE TABLE logger(
...> ID int,
...> Time text
...> );

sqlite> CREATE TRIGGER log AFTER UPDATE OF amount ON expense WHERE ID BETWEEN 5 AND 10;
...> BEGIN
...> INSERT INTO logger(ID, time) VALUES(new.ID, datetime('now'));
...> END;

为什么WHERE没有工作? :(

1 个答案:

答案 0 :(得分:1)

在SQLite中定义触发器时,您应该使用WHEN而不是WHERE。试试这个:

CREATE TRIGGER log AFTER UPDATE OF amount ON expense 
FOR EACH ROW WHEN new.ID BETWEEN 5 AND 10
BEGIN
INSERT INTO logger(ID, time) VALUES(new.ID, datetime('now'));
END;

另请注意,我添加了FOR EACH ROW。它现在在SQLite中是可选的,但它对文档很有用。