2015-08-09 87 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