2016-11-17 113 views
0

我试图更新备忘录表中的id列。所以,如果用的3号备忘录被删除,该行下方现在变成3.Sqlite自动增量

sqLiteDatabase.execSQL("CREATE TABLE " + TABLE_NAME + "(" + 
      "ID INTEGER PRIMARY KEY AUTOINCREMENT, MEMO TEXT, URGENCY TEXT)"); 

创建表ID,工作完全正常,但我发现一个SQLite错误“附近自动增量”。

db.execSQL("ALTER TABLE " + TABLE_NAME + " AUTOINCREMENT = 
         (SELECT MAX(ID) FROM " + TABLE_NAME + ");"); 
+0

AUTOINCREMENT意味着当您在列中添加新行时,ID会自动增加1,因此您不需要关注此列。当你删除该行时,它不会减少,你添加的下一行将比前一行(甚至是删除的)还要大1。 – aleksandrbel

回答

2

AUTOINCREMENT不能正常工作,因为我猜你正在等待。

如果某列的类型为INTEGER PRIMARY KEY AUTOINCREMENT,则使用略有不同的ROWID选择算法。为新行选择的ROWID至少为,比在同一表中存在的最大ROWID大大1。