sqlite整数主键非空约束失败

时间:2018-03-01 17:52:20

标签: sqlite

根据SQLite文档/ FAQ,声明INTEGER PRIMARY KEY的列将自动获得+1列的最高值(如果省略)。
使用SQLite版本3.22.0 2018-01-22 18:45:57
按如下方式创建表:

CREATE TABLE test (
   demo_id INTEGER PRIMARY KEY NOT NULL,
   ttt VARCHAR(40) NOT NULL,
   basic VARCHAR(25) NOT NULL,
   name VARCHAR(255) NOT NULL,
   UNIQUE(ttt, basic) ON CONFLICT ROLLBACK
   ) WITHOUT ROWID;

然后像这样插入:

INSERT INTO test (ttt, basic, name) VALUES ('foo', 'bar', 'This is
 a test');

给出:

Error: NOT NULL constraint failed: test.demo_id
sqlite>

当期望创建一个demo_id值为1的记录时。即使表已经包含值,它也会在没有明确指定具有相同错误的id的情况下插入行失败。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

documentation表示您获得了rowid的自动增量值。但是您指定了WITHOUT ROWID