2016-11-17 5 views
0

Я пытаюсь обновить столбец id в таблице заметок. Так что, если памятка с идентификатором 3 удаляется, строка внизу теперь становится идентификатором 3.Sqlite Autoincrement

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

создать таблицу, отлично работает, но я получаю сообщение об ошибке SQLite «около Autoincrement».

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

AUTOINCREMENT означает, что при добавлении новой строки в столбце идентификатор автоматически увеличится на 1, поэтому вам не нужно обращать внимание на этот столбец. И это не будет уменьшаться при удалении строки, добавленная следующая строка будет еще больше на 1, чем предыдущая (даже удаленная) строка. – aleksandrbel

ответ

2

AUTOINCREMENT не работает, как я предполагаю, что вы ожидаете.

Если столбец имеет тип INTEGER PRIMARY KEY AUTOINCREMENT, то используется несколько иной алгоритм выбора ROWID. ROWID, выбранный для новой строки, составляет не менее , который больше, чем самый большой ROWID, который когда-либо существовал в той же таблице.