Я в основном хочу преобразовать таблицу из mysql в sqlite по следующей схеме:
create table items (
id integer auto_increment,
version integer default 0,
primary key (id, version)
);
По сути, я хочу, чтобы идентификатор автоматически увеличивался всякий раз, когда я вставляю что-либо в таблицу, с VERSION, начинающимся с 0, но все же допускаю несколько элементов с одинаковым идентификатором, пока VERSION отличается.
Я пытаюсь воспроизвести это поведение с помощью Sqlite, однако не могу заставить работать создание таблиц. Похоже, что вам разрешен только один столбец в качестве автоинкремента, и он должен быть первичным ключом. Если я сделаю ID первичным ключом, я не смогу использовать VERSION как часть ключа. Однако, если я сделаю ключ из нескольких столбцов (ID, VERSION), я не смогу получить ID для автоматического увеличения.
Есть ли обходной путь или, возможно, лучший способ разработки моего стола?
Я думал о следующем решении:
Таблица 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 для хранения всего, кроме предметов, просто для генерации уникальных идентификаторов.