Da documentação:
Uma tabela criada usando CREATE TABLE AS não tem PRIMARY KEY e nenhum tipo de restrição. O valor padrão de cada coluna é NULL.
Você não precisa adicionar
UNIQUE
restrição em uma COLUMN que tem PRIMARY KEY
restrição.Explicação:
Uma restrição UNIQUE é semelhante a uma restrição PRIMARY KEY, exceto que uma única tabela pode ter qualquer número de restrições UNIQUE.
Em vez disso, adicione
NOT NULL
.É por isso:
De acordo com o padrão SQL, PRIMARY KEY deve sempre implicar NOTNULL. Infelizmente, devido a um bug em algumas versões anteriores, esse não é o caso do SQLite. A menos que a coluna seja uma INTEGER PRIMARY KEY ou a tabela seja uma tabela WITHOUT ROWID ou a coluna seja declarada NOT NULL, o SQLite permite valores NULL em uma coluna PRIMARY KEY. O SQLite pode ser corrigido para estar em conformidade com o padrão, mas isso pode prejudicar os aplicativos legados. Portanto, foi decidido apenas documentar o fato de que o SQLite permite NULLs na maioria das colunas PRIMARY KEY.
Recomendo usar esta definição de coluna:
CREATE TABLE conversations (
conversation_id INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,
...
}