2015-08-09 48 views
0

我昨天启动了SQLite并尝试了一些东西。我搜索谷歌和stackoverflow的答案,但无法找到任何:(我创建了一个数据库和里面,创建了几个表收入费用。然后,我插入了20个条目,并试图做出触发登录做5项之间的任何变化 - 10。但是一个错误信息来Error: near "where": syntax error用表WHERE子句创建触发器

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

在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中是可选的,但它对文档很有用。

+0

哇!它的工作! :D谢谢@Renzo我正在使用的教程甚至没有'WHEN'关键字。感谢支持\ m/ – Blogger

+0

不客气。 – Renzo