Status-1849

SQLite 3的INTEGER PRIMARY KEYROWID的别名。在插入数据时,这种类型的列的取值会[参考]:

  • 选取当前表内比已记录了的ROWID大的最小的整数;
  • 如果ROWID已经到达了最大的可用整数(9223372036854775807),那么随机选择一个正整数:
    • 若该被选取的正整数没有在当前表的ROWID中使用,则返回该正整数;否则继续随机选择;
    • 若在一定次数的尝试之后,没有找到可用的正整数,则该插入失败,返回SQLITE_FULL

可以通过在创建表示对列添加AUTOINCREMENT的属性来改变选取算法。

也就是说,在仅使用INTEGER PRIMARY KEY声明的列中,存在新旧行数据(旧行数据被删除)用同一ROWID的可能。