sqlite: chave primária de várias colunas com uma coluna de incremento automático
Basicamente, quero converter uma tabela do mysql para sqlite com o seguinte esquema:
create table items (
id integer auto_increment,
version integer default 0,
primary key (id, version)
);
Essencialmente, quero que o ID seja incrementado automaticamente sempre que insiro algo na tabela, com VERSION começando em 0, mas ainda permitimos vários itens com o mesmo ID, desde que VERSION seja diferente.
No entanto, estou tentando replicar esse comportamento com o SQLite, mas não consigo fazer a criação da tabela funcionar. Parece que você só tem permissão para uma coluna como incremento automático e deve ser a chave primária. Se eu fizer do ID a chave primária, não posso usar VERSION como parte da chave. No entanto, se eu criar uma chave com várias colunas (ID, VERSION), não será possível obter o ID para aumentar automaticamente.
Existe uma solução alternativa ou talvez uma maneira melhor de projetar minha mesa?
Eu estava pensando na seguinte solução:
tabela 1:
create table items {
id integer primary autoincrement,
version integer}
Tabela 2:
create table item_version {
id integer,
version integer,
primary key (id, version)
}
Quando adiciono um novo item, adiciono-o aos itens e tenho o incremento automático de ID. no entanto, se eu tiver uma nova versão do mesmo ID, adicione-a ao item_version. Basicamente, eu uso item_version para armazenar tudo, exceto itens, apenas para gerar IDs únicos.