【问题标题】:SQLite id auto-incrementSQLite id 自动递增
【发布时间】:2016-11-25 16:25:15
【问题描述】:

我使用下面的查询创建了一个 SQLite 表

 db.execSQL("create table " + TABLE__WORK + " ( " + ID1 + " INTEGER PRIMARY KEY ,Name TEXT, Title TEXT, Time TEXT, Date TEXT)");

现在可以自动增加 ID。但是在我执行删除查询后,删除第一行数据并再次添加,ID将从1开始,而不是2。是否可以让id变成2

【问题讨论】:

标签: android sqlite primary-key


【解决方案1】:

SQLite AUTOINCREMENT 是用于自动增加表中字段值的关键字。您不需要ID1

见参考here

请使用这个:

db.execSQL("create table " + TABLE__WORK + " (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,Name TEXT, Title TEXT, Time TEXT, Date TEXT)");

【讨论】:

  • 谢谢,但我不明白为什么我的 ID 会自动递增,虽然我没有添加 AUTOINCREMENT ?
  • 如果你告诉我你的代码中ID1是什么,我会尽力给你一个解释
  • public static final String ID1="ID";
  • 感谢您的解释
  • 所以,如果表格最初是空的,那么ID 将为1。当您删除行时,表格保持为空,ID 再次变为1。
【解决方案2】:

设为INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL

SQLite Autoincrement 文档是这样说的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 2015-03-10
    • 1970-01-01
    • 2015-03-19
    • 2012-03-04
    • 2018-02-11
    • 2015-07-05
    • 2014-10-01
    相关资源
    最近更新 更多