От документацията:
Таблица, създадена с помощта на 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,
...
}