sqlite会始终在表末尾插入新记录吗?

时间:2018-10-23 18:57:31

标签: database sqlite insert

当我们在sqlite表中插入一条记录时,它总是插入到表的末尾吗?或者,如果以前删除了记录,是否有可能在将记录添加到末尾之前先填充空白?

1 个答案:

答案 0 :(得分:3)

SQLite与许多数据库一样,实际上并没有记录位置的概念(就典型用户而言),除了表会自动获得 rowid 将是一个通常增加1的唯一标识符(并非可以保证)。可以重新使用释放的 rowid 数字(如果使用了AUTOINCREMENT,则不能重复使用),但要等到使用了rowid 9223372036854775807后才能重新使用。此 rowid 通常是访问行(记录)的最有效方法。以下对 rowid SQLite Autoincrement进行了很多解释。

  • 在定义表时,可以使用WITHROW ROWID(对于SQlite的最新版本),在这种情况下,将没有 rowid 列。

  • 通常使用 rowid 列的别名。通过编码定义别名?整数主键(带有可选的AUTOINCREMENT关键字)。

    • 注意:如果未分配别名,VACUUM可能会更改 rowid

如果要按特定顺序排列行,则在查询表时使用 ORDER BY 关键字。在这种情况下,结果集将排序。

尽管如此,它仍然可以像许多数据库一样尝试有效地管理存储,尽管可以使用VACUUM命令SQL As Understood By SQLite VACUUM或通过编译指示打开自动真空模式。