如果要让主键 auto_increment, 应该设置 INTEGER PRIMARY KEY,并且不能设置 NOT NULL
为什么 sqlite3 设置了 INTEGER PRIMARY KEY
就不能写 NOT NULL
了
如果要让主键 auto_increment, 应该设置 INTEGER PRIMARY KEY,并且不能设置 NOT NULL
为什么 sqlite3 设置了 INTEGER PRIMARY KEY
就不能写 NOT NULL
了
1 回答2.4k 阅读✓ 已解决
1 回答1.6k 阅读
就这么规定的,作者当初选择了这种方式来实现而已,没有为什么。
自增主键的特性是 SQLite 2.3.4 版本引入的。
大意:在插入语句中,如果 ROWID / INTEGER PRIMARY KEY 列没有显式地指定一个值(即 null),那么会自动填充一个未使用过的整数,通常即当前使用的最大 ROWID +1。
所以你看,这里的判断是否要自增的逻辑其实挺简单的,你也可以理解成作者“偷懒”了,没去考虑很多复杂的边界条件。这跟 SQLite 本身的轻量级定位也很吻合。