Clave multi-primaria de SQLite en una tabla, una de ellas es Incremento automático

Tengo varias keys primarias (compuestas) en una tabla y una de ellas se autoincrementará. Sin embargo, curiosamente SQLite permite el uso de la palabra key AUTOINCREMENT justo después de una palabra key obligatoria PRIMARY KEY .

Mi consulta es:

 CREATE TABLE ticket ( id INTEGER PRIMARY KEY AUTOINCREMENT, seat TEXT, payment INTEGER, PRIMARY KEY (id, seat)) 

Sin embargo, el error es que la table "ticket" has more than one primary key .

En realidad, puedo evitar otras keys principales para esta tabla. Pero estoy codificando un marco ORM (demonios, sí, estoy loco) y no quiero cambiar la estructura de la generación de restricciones PRIMARY KEY para una tabla (porque está permitido en MySQL afaik).

¿Conoces alguna solución?

No, no creo que esto sea posible.

Puede crear un UNIQUE INDEX que tenga esencialmente el mismo efecto que una CLAVE PRIMARIA:

 CREATE UNIQUE INDEX pk_index ON "table1"("field1","field2"); 

Además, no veo la lógica de tu esquema, es decir,> si una columna es autoincrement y no pretendes jugar con los valores manualmente, de todos modos será única, por lo que es una buena key primaria corta simple . ¿Por qué el compuesto? Sin embargo, puede tener buenas razones para hacer otro índice en la combinación de columnas.

UNIQUE INDEX solo no tiene el mismo efecto que PRIMARY KEY . Un índice único permitirá un NULL; una restricción de key primaria no lo hará. Será mejor que declares esas dos limitaciones.

 CREATE TABLE ticket ( id INTEGER PRIMARY KEY AUTOINCREMENT, seat TEXT NOT NULL, payment INTEGER, UNIQUE (id, seat)); 

También debe pensar detenidamente si realmente necesita aceptar pagos NULL.

También puedes escribir así:

 CREATE TABLE ticket ( id INTEGER PRIMARY, seat TEXT, payment INTEGER, PRIMARY KEY (id, seat))