我找不到任何说明你在PRIMARY KEY字段上没有DEFAULT值的文档。但是我对这个测试代码的实验并没有成功。它被认为是有效的,但只生成(n + 1)的值。它适用于非主键字段。
CREATE Table A (
id INTEGER PRIMARY KEY default(random())
)
这可能吗?
答案 0 :(得分:2)
integer primary key
是SQlite中的一种关键字,是rowid
的别名,如果您提供默认值,SQlite会默默忽略您的默认值。
所以你有两个解决方案:
创建一个没有rowid
create table A (id integer primary key default(random())) without rowid;
将id
声明为整数主键,而不使用"关键字" integer primary key
,例如将integer
替换为int
:
create table A (id int primary key default(random()));
关于您是否要采用without rowid
路线,您可以阅读文档的this section。
答案 1 :(得分:0)
您可以使用autoincrement
:
CREATE Table A (
id INTEGER PRIMARY KEY AUTOINCREMENT
);
严格来说,这不是必需的,因为SQLite有一个内置的rowid
。