SQLite
 sql >> база данни >  >> RDS >> SQLite

Автоматичното нарастване на основния ключ на SQLite не работи

От документацията:

Таблица, създадена с помощта на CREATE TABLE AS, няма ПЪРВИЧЕН КЛЮЧ и никакви ограничения от какъвто и да е вид. Стойността по подразбиране на всяка колона е NULL.

Не е нужно да добавяте UNIQUE ограничение за COLUMN, която има PRIMARY KEY ограничение.
Обяснение:

Ограничение UNIQUE е подобно на ограничение PRIMARY KEY, с изключение на това, че една таблица може да има произволен брой ограничения UNIQUE.

Вместо това добавете NOT NULL .Ето защо:

Според стандарта на SQL, PRIMARY KEY винаги трябва да означава NOTNULL. За съжаление, поради грешка в някои ранни версии, това не е така в SQLite. Освен ако колоната не е ЦЕЛ ПЪРВИЧЕН КЛЮЧ или таблицата е БЕЗ РОДОВ таблици или колоната не е декларирана НЕ NULL, SQLite позволява NULL стойности в колона ПЪРВИЧЕН КЛЮЧ. SQLite може да бъде фиксиран, за да отговаря на стандарта, но това може да наруши наследените приложения. Следователно беше решено просто да се документира фактът, че SQLite позволява NULL в повечето колони PRIMARY KEY.


Препоръчвам да използвате тази дефиниция на колона:

CREATE TABLE conversations (
    conversation_id INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,
...
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете идентификатора на нов запис, вмъкнат в база данни от върнатия Uri

  2. Как да форматирате резултатите от заявката на SQLite в режим TCL

  3. Как работи SQLite Nullif().

  4. Предупреждение по време на компилиране в Android Room за колона във външен ключ, която не е част от индекс. Какво означава?

  5. SQLite Създаване на таблица