sqlite: многостолбцовый первичный ключ со столбцом автоприращения

Я в основном хочу преобразовать таблицу от mysql до sqlite со следующей схемой:

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

По существу я хочу идентификатор к автоматическому инкременту каждый раз, когда я вставляю что-либо в таблицу, с ВЕРСИЕЙ, начинающейся в 0, но все еще позволяю несколько объектов с тем же идентификатором, пока ВЕРСИЯ отличается.

Я пытаюсь копировать это поведение с Sqlite однако, я, может казаться, не получаю работу создания таблицы. Кажется, что Вам только разрешают один столбец как автоинкременту, и это должен быть первичный ключ. Если я делаю идентификатор первичным ключом, то я не могу использовать ВЕРСИЮ в качестве части ключа. Однако, если я делаю многостолбцовый ключ (идентификатор, ВЕРСИЯ), затем я не могу получить идентификатор к автоматическому инкременту.

Существует ли обходное решение или возможно лучший способ разработать мою таблицу?


Я думал о следующем решении:

таблица 1:

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

таблица 2:

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

Когда я добавляю новый объект, я добавляю его к объектам и имею идентификатор автоматический инкремент. однако, если у меня когда-нибудь есть новая версия того же идентификатора, я добавляю его к item_version. в основном я использую item_version для содержания всего кроме объектов к только для генерации уникальных идентификаторов.

5
задан Benjamin 21 June 2014 в 17:04
поделиться