Подтвердить что ты не робот

Автоматический прирост Android SQLite

В настоящее время у меня есть таблица с именем User, которая имеет столбец id, который создается как

'INTEGER PRIMARY KEY'

Предположим, что я создал двух пользователей, поэтому таблица имеет идентификаторы 1 и 2

Если я удалю второго пользователя и создаю третье значение id, мне нужно, чтобы это было 3

Итак, похоже, что Android выбирает следующий доступный идентификатор, как я могу изменить его на более похожий на порядковый номер?

Привет

4b9b3361

Ответ 1

Сделайте INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL. Здесь документы говорят:

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

Поведение, выполняемое ключевым словом AUTOINCREMENT, является тонким отличается от поведения по умолчанию. С помощью AUTOINCREMENT строки с автоматически выбранные ROWID гарантированно имеют ROWID, которые имеют никогда ранее не использовались по одной и той же таблице в той же базе данных. И автоматически генерируемые ROWID гарантируются монотонно увеличение.

Ответ 2

SQLite AUTOINCREMENT - это ключевое слово, используемое для автоматического увеличения значения поля в таблице. Мы можем автоматически увеличивать значение поля, используя ключевое слово AUTOINCREMENT при создании таблицы с определенным именем столбца для автоматического увеличения его.

Ключевое слово AUTOINCREMENT может использоваться только с полем INTEGER. Синтаксис:

Основное использование ключевого слова AUTOINCREMENT выглядит следующим образом:

CREATE TABLE table_name(
   column1 INTEGER AUTOINCREMENT,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);

Пример см. ниже: Рассмотрим таблицу COMPANY, которая будет создана следующим образом:

sqlite> CREATE TABLE TB_COMPANY_INFO(
   ID INTEGER PRIMARY KEY   AUTOINCREMENT,
   NAME           TEXT      NOT NULL,
   AGE            INT       NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Теперь вставьте следующие записи в таблицу TB_COMPANY_INFO:

INSERT INTO TB_COMPANY_INFO (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'MANOJ KUMAR', 40, 'Meerut,UP,INDIA', 200000.00 );

Теперь выберите запись

SELECT *FROM TB_COMPANY_INFO
    ID      NAME            AGE     ADDRESS             SALARY
    1       Manoj Kumar     40      Meerut,UP,INDIA     200000.00