【发布时间】:2018-03-01 17:52:20
【问题描述】:
根据 SQLite 文档/常见问题解答,声明为 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 也会导致插入行失败,并出现相同的错误。
我做错了什么?
【问题讨论】:
-
看起来和这个question一样(有一些很好的答案)。
-
这能回答你的问题吗? Using a Primary Key with a WithoutRowID
标签: sqlite