sqlite: mehrspaltiger Primärschlüssel mit einer automatisch inkrementierten Spalte

Ich möchte im Grunde eine Tabelle von MySQL nach SQLite mit dem folgenden Schema konvertieren:

create table items (
id integer auto_increment,
version integer default 0,
primary key (id, version)
);

Grundsätzlich möchte ich, dass die ID jedes Mal automatisch erhöht wird, wenn ich etwas in die Tabelle einfüge, wobei VERSION bei 0 beginnt, aber immer noch mehrere Elemente mit derselben ID zulässig sind, solange VERSION unterschiedlich ist.

Ich versuche, dieses Verhalten mit Sqlite zu replizieren, aber ich scheine die Tabellenerstellung nicht zum Laufen zu bringen. Es sieht so aus, als ob Ihnen nur eine Spalte als Autoincrement erlaubt ist und es muss der Primärschlüssel sein. Wenn ich ID zum Primärschlüssel mache, kann ich VERSION nicht als Teil des Schlüssels verwenden. Wenn ich jedoch einen mehrspaltigen Schlüssel (ID, VERSION) erstelle, kann ich die ID nicht automatisch erhöhen.

Gibt es eine Problemumgehung oder eine bessere Möglichkeit, meinen Tisch zu gestalten?

Ich dachte an die folgende Lösung:

Tabelle 1

create table items {
id integer primary autoincrement,
version integer}

Tabelle 2

create table item_version {
id integer,
version integer,
primary key (id, version)
}

Wenn ich ein neues Element hinzufüge, füge ich es zu Elementen hinzu und habe eine automatische Inkrementierung der ID. Wenn ich jedoch jemals eine neue Version derselben ID habe, füge ich sie zu item_version hinzu. im grunde verwende ich item_version, um alles außer items zu speichern und nur um eindeutige ids zu generieren.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage