Status-1849

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

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

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

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

Status-1843

MySQL的replication允许在主、从服务器中对同一个数据库使用不同的名称(通过replicate-rewrite-db实现),所以在查询时要么使用正确的数据库名(对应到主从服务器中会不同),要么避免使用数据库名(依赖先使用USE选取数据库)。

据说,PostgreSQL在Logical Replication模式下允许数据在不同操作系统 / 数据库 / PostgreSQL(大)版本 / 等之间流动,因此也允许同一数据表(table)在不同的数据库中。