【问题标题】:How can I use an autoincrement variable in sqlite?如何在 sqlite 中使用自动增量变量?
【发布时间】:2015-05-11 01:30:22
【问题描述】:

这是我在 sqlite 中的代码: stmt.execute("如果不存在人则创建表(名称文本,ID INTEGER PRIMARY KEY AUTOINCREMENT)");

但是当我在 Navicat 中看到我的表时,当我想使用它时,它全部为空。我想像整数(1,2,...)一样使用它。我该怎么办? 请帮帮我...

【问题讨论】:

  • 也许在创建之前尝试删除表而不是“不存在”。听起来您已经有一个无效的表,因为不可能有一个具有空值主键的表
  • 谢谢...我尝试删除 db 文件并再次创建它,现在已修复。

标签: java sqlite


【解决方案1】:

一个简单的谷歌查询结果如下:

总结

AUTOINCREMENT 关键字强加了额外的 CPU、内存、磁盘空间和 磁盘 I/O 开销,如果不是严格需要,应该避免。它是 通常不需要。

在 SQLite 中,类型为 INTEGER PRIMARY KEY 的列是 ROWID(除了 WITHOUT ROWID 表),它始终是 64 位有符号的 整数。

在 INSERT 上,如果 ROWID 或 INTEGER PRIMARY KEY 列不是 显式给定一个值,然后它将自动填充 未使用的整数,通常比当前最大的 ROWID 大一 正在使用。无论 AUTOINCREMENT 是否 使用关键字。

如果 AUTOINCREMENT 关键字出现在 INTEGER PRIMARY KEY 之后,则 更改自动 ROWID 分配算法以防止重用 数据库生命周期内的 ROWID 数。换句话说, AUTOINCREMENT 的目的是防止重复使用 ROWID 以前删除的行。

参考: AutoIncrement SQLite

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多