我昨天开始使用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
没有工作? :(
答案 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中是可选的,但它对文档很有用。