2015-04-12 1192 views
0

觸發誤差繼SQLite的文檔:https://www.sqlite.org/lang_createtrigger.html我創建了一個非常簡單的扳機上更簡單的數據庫表(使用sqlite3的數據庫):SQLite的創建使用默認值

CREATE TABLE IF NOT EXISTS 
users_ids 
(
id INTEGER PRIMARY KEY AUTOINCREMENT, 
status INTEGER DEFAULT 0 
) 

和觸發:

CREATE TRIGGER addID 
AFTER UPDATE OF status 
ON users_ids 
WHEN NEW.status > 0 
BEGIN 
    INSERT INTO users_ids DEFAULT VALUES; 
END 

這給了我關於DEFAULT關鍵字的錯誤。如果我將INSERT更改爲:

INSERT INTO users_ids (status) VALUES (0); 

然後運行。但是由於文檔中明確提到DEFAULT VALUES是INSERT的一個選項(插入觸發器除外),所以我沒有看到爲什麼它給了我這個錯誤。我在這裏錯過了什麼?

+0

這些SQL語句充滿拼寫錯誤。複製並粘貼實際的代碼。 –

+0

@CL。字面上有兩個完全小的拼寫錯誤(第一個是額外的下劃線,第二個是最後一個額外的分號)。固定兩者,不會改變任何東西。 – Resurrection

回答

0
CREATE TABLE IF NOT EXISTS users_ids ... 
AFTER UPDATE OF status ON user_ids ... 
       INSERT INTO user_id ... 

請確定該表的名稱實際上是什麼。

此外,documentation說:

INSERT語句的 「INSERT INTO 默認值」 的形式,不支持。

+0

沒有什麼區別......如果我混淆了名字,我永遠無法得到有關DEFAULT成爲問題的錯誤。 – Resurrection

+0

關於編輯:是的,我誤讀了。我明白它只適用於INSERT觸發器,並不適用於所有觸發器。這解釋了它。謝謝! – Resurrection