Android SQLite автоинкремент

40

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

'INTEGER PRIMARY KEY'

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

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

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

Привет

  • 1
    но вам нужен первичный ключ, и это работает нормально. Почему вам это нужно?
Теги:

2 ответа

82
Лучший ответ

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

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

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

  • 1
    Я хочу AUTOINCREMENT без PRIMARY KEY .because Поручаю первичный ключ еще один столбец, я использую _ID INTEGER AUTOINCREMENT NOT NULL это сделать error.Please помочь мне братан.
  • 0
    @ reegan29 AUTOINCREMENT можно использовать ТОЛЬКО с INTEGER PRIMARY KEY. Поскольку ключевое слово AUTOINCREMENT изменяет поведение алгоритма выбора ROWID, AUTOINCREMENT не разрешено для таблиц БЕЗ ROWID или для любого столбца таблицы, кроме INTEGER PRIMARY KEY. Любая попытка использовать AUTOINCREMENT для таблицы БЕЗ ROWID или для столбца, отличного от столбца INTEGER PRIMARY KEY, приводит к ошибке. Автоинкремент SQLite
8

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
  • 0
    спасибо ... мне нужно было "INTEGER PRIMARY KEY AUTOINCREMENT" для поля автоинкремента .. и получил его.
  • 0
    Стреляй, у меня было AUTOINCREMENT в неправильном месте. Спасибо за пример!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню