Z dokumentacji:
Tabela utworzona za pomocą CREATE TABLE AS nie ma klucza podstawowego i żadnych ograniczeń. Domyślna wartość każdej kolumny to NULL.
Nie musisz dodawać UNIQUE
ograniczenie na COLUMN, która ma PRIMARY KEY
ograniczenie.
Wyjaśnienie:
Ograniczenie UNIQUE jest podobne do ograniczenia PRIMARY KEY, z tym wyjątkiem, że pojedyncza tabela może mieć dowolną liczbę ograniczeń UNIQUE.
Zamiast tego dodaj NOT NULL
.Dlatego:
Zgodnie ze standardem SQL, PRIMARY KEY powinien zawsze oznaczać NOTNULL. Niestety, z powodu błędu w niektórych wczesnych wersjach, nie dotyczy to SQLite. O ile kolumna nie jest INTEGER PRIMARY KEY lub tabela jest tabelą BEZ ROWID lub kolumna nie jest zadeklarowana jako NOT NULL, SQLite zezwala na wartości NULL w kolumnie PRIMARY KEY. SQLite można naprawić, aby był zgodny ze standardem, ale może to spowodować uszkodzenie starszych aplikacji. Dlatego zdecydowano się jedynie udokumentować fakt, że SQLite zezwala na wartości NULL w większości kolumn PRIMARY KEY.
Polecam używanie tej definicji kolumny:
CREATE TABLE conversations (
conversation_id INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,
...
}