代码之家  ›  专栏  ›  技术社区  ›  joan

SQLITE:关于使用AUTOINCREMENT的最佳实践

  •  1
  • joan  · 技术社区  · 6 年前

    根据 official manual :

    1 回复  |  直到 6 年前
        1
  •  2
  •   user10438974 user10438974    6 年前

    按照文档中的建议,最好不要使用AUTOINCREMENT,除非需要确保 (又名id)大于任何已添加的。但是,(在正常使用中)这是一个没有实际意义的点,即使没有自动递增,直到您达到9223372036854775807行,那么将产生一个更高的rowid/id。

    如果您确实达到了9223372036854775807的id/rowid,那么如果您使用了AUTOINCREMENT编码,那么就是这样,因为将发生SQLITE\u FULL异常。在没有自动递增的情况下,将尝试获取未使用的id/rowid。

    AUTOINCREMENT向sqlite\序列添加一行(如果需要,则添加一个表),该行记录分配的最高id。使用AUTOINCREMENT和不使用AUTOINCREMENT的区别在于引用sqlite\序列表,而不使用AUTOINCREMENT则不引用。因此,如果删除了具有最高id的行,AUTOINCREMENT将从sqlite\u sequence表中获取有史以来分配的最高id(user,取两者中的较大值) max(rowid) ),则不使用,因此它使用插入行的表中的最高值(相当于 最大值(rowid) ).

    What are the overheads of using AUTOINCREMENT for SQLite on Android? .