2015-04-12 1193 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