Обратите внимание, что не обязательно использовать локальное репо. Если этот проект делится с другими, тогда у всех остальных будут проблемы и вопросы, если он не работает, и банка не будет доступна даже в вашей системе управления версиями!
Хотя общее репо - это лучший ответ, если вы не можете сделать это по какой-то причине, тогда встраивание банки лучше, чем локальное репо. Локальное содержимое репо может вызвать множество проблем, особенно с течением времени.
К сожалению, такой функции нет, существует AFAIK только в MySQL.
Когда мне нужно что-то подобное, я просто использовал следующий SQL при вставке новых строк:
INSERT INTO items(id,version)
SELECT new_id,SELECT COALESCE(MAX(version),0)+1 FROM items WHERE id=new_id)
Это то, что сработало у меня.
Вы также можете создать триггер, который будет корректно обновлять версию:
create trigger my_increment
after insert
on items
begin
update items
set version=(select max(version) from items where id=new.id)+1
where id=new.id and version = 0;
end;
Теперь, каждый раз, когда вы вставляете новое значение в таблицу:
> insert into items(id) values(10);
> insert into items(id) values(15);
> insert into items(id) values(10);
> select * from items;
10|1
15|1
10|2
Как вы можете видеть, он создает версию для вновь вставленного id. Начиная с 1. Вы можете немного поработать с ним, чтобы получить что-то другое.
Не целочисленные первичные ключи автоматически увеличиваются в SQLite?