sql >> Base de Datos >  >> RDS >> SQLite

La clave PRIMARIA SQLite AutoIncrement no funciona

De la documentación:

Una tabla creada con CREATE TABLE AS no tiene PRIMARY KEY ni restricciones de ningún tipo. El valor predeterminado de cada columna es NULL.

No tienes que agregar UNIQUE restricción en una COLUMNA que tiene PRIMARY KEY restricción.
Explicación:

Una restricción ÚNICA es similar a una restricción PRIMARY KEY, excepto que una sola tabla puede tener cualquier cantidad de restricciones ÚNICAS.

En su lugar, agregue NOT NULL .Por eso:

De acuerdo con el estándar SQL, PRIMARY KEY siempre debe implicar NOTNULL. Desafortunadamente, debido a un error en algunas versiones anteriores, este no es el caso en SQLite. A menos que la columna sea INTEGER PRIMARY KEY o la tabla sea SIN ROWID o la columna se declare NOT NULL, SQLite permite valores NULL en una columna PRIMARY KEY. SQLite podría corregirse para cumplir con el estándar, pero hacerlo podría dañar las aplicaciones heredadas. Por lo tanto, se ha decidido simplemente documentar el hecho de que SQLite permite valores NULL en la mayoría de las columnas PRIMARY KEY.


Recomiendo usar esta definición de columna:

CREATE TABLE conversations (
    conversation_id INTEGER PRIMARY KEY NOT NULL AUTOINCREMENT,
...
}