Uit documentatie:
Een tabel die is gemaakt met CREATE TABLE AS heeft geen PRIMARY KEY en geen enkele vorm van beperkingen. De standaardwaarde van elke kolom is NULL.
U hoeft UNIQUE
niet toe te voegen beperking op een KOLOM met PRIMARY KEY
beperking.
Uitleg:
Een UNIQUE-beperking is vergelijkbaar met een PRIMARY KEY-beperking, behalve dat een enkele tabel een willekeurig aantal UNIQUE-beperkingen kan hebben.
Voeg in plaats daarvan NOT NULL
. toe .Dit is waarom:
Volgens de SQL-standaard moet PRIMARY KEY altijd NOTNULL betekenen. Helaas is dit vanwege een bug in sommige vroege versies niet het geval in SQLite. Tenzij de kolom een INTEGER PRIMARY KEY is of de tabel een WITHOUT ROWID-tabel is of de kolom NOT NULL is gedeclareerd, staat SQLite NULL-waarden toe in een PRIMARY KEY-kolom. SQLite zou kunnen worden aangepast om te voldoen aan de standaard, maar dit kan legacy-applicaties kapot maken. Daarom is besloten om alleen het feit te documenteren dat SQLite NULL's toestaat in de meeste PRIMARY KEY-kolommen.
Ik raad aan om deze kolomdefinitie te gebruiken:
CREATE TABLE conversations (
conversation_id INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,
...
}