SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

O AutoIncrement da chave PRIMARY do SQLite não funciona


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,
...
}