1 个回答

就这么规定的,作者当初选择了这种方式来实现而已,没有为什么。

自增主键的特性是 SQLite 2.3.4 版本引入的。

REF: https://sqlite.org/autoinc.html

On an INSERT, if the ROWID or INTEGER PRIMARY KEY column is not explicitly given a value, then it will be filled automatically with an unused integer, usually one more than the largest ROWID currently in use.

大意:在插入语句中,如果 ROWID / INTEGER PRIMARY KEY 列没有显式地指定一个值(即 null),那么会自动填充一个未使用过的整数,通常即当前使用的最大 ROWID +1。

所以你看,这里的判断是否要自增的逻辑其实挺简单的,你也可以理解成作者“偷懒”了,没去考虑很多复杂的边界条件。这跟 SQLite 本身的轻量级定位也很吻合。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进