Dalla documentazione:
Una tabella creata utilizzando CREATE TABLE AS non ha PRIMARY KEY e nessun tipo di vincoli. Il valore predefinito di ogni colonna è NULL.
Non è necessario aggiungere UNIQUE
vincolo su una COLONNA che ha PRIMARY KEY
vincolo.
Spiegazione:
Un vincolo UNIQUE è simile a un vincolo PRIMARY KEY, tranne per il fatto che una singola tabella può avere un numero qualsiasi di vincoli UNIQUE.
Invece aggiungi NOT NULL
.Ecco perché:
Secondo lo standard SQL, PRIMARY KEY dovrebbe sempre implicare NOTNULL. Sfortunatamente, a causa di un bug in alcune prime versioni, questo non è il caso di SQLite. A meno che la colonna non sia una CHIAVE PRIMARIA INTEGER o la tabella non sia una tabella SENZA ROWID o la colonna sia dichiarata NOT NULL, SQLite consente valori NULL in una colonna CHIAVE PRIMARIA. SQLite potrebbe essere corretto per conformarsi allo standard, ma ciò potrebbe interrompere le applicazioni legacy. Pertanto, è stato deciso di documentare semplicemente il fatto che SQLite consente NULL nella maggior parte delle colonne PRIMARY KEY.
Consiglio di utilizzare questa definizione di colonna:
CREATE TABLE conversations (
conversation_id INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,
...
}