Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > sqlite: присвоение primary key


Автор: math64 30.7.2014, 01:13
sqlite
Код

create table objects(id_object integer primary key, name varchar)
create table parts(id_object integer,id_part integer primary key, name varchar)
create table links(id_object integer,id_part integer, id_part2 integer, primary key(id_part,id_part2))

При обновлении объекта удаляется
Код

delete from objects where id_object=?
delete from parts where id_object=?
delete from links where id_object=?

а затем вставляются заново,
Код

insert into objects(name)values(?)

 
primary key заполняются автоматически базой данных, но получают новые значения.
Можно ли сделать, чтобы использовались старые значения (если конечно не специально запоминать и использовать их)?

Автор: borisbn 25.8.2014, 17:24
http://www.sqlite.org/autoinc.html
Цитата
The normal ROWID selection algorithm described above will generate monotonically increasing unique ROWIDs as long as you never use the maximum ROWID value and you never delete the entry in the table with the largest ROWID. If you ever delete rows or if you ever create a row with the maximum possible ROWID, then ROWIDs from previously deleted rows might be reused when creating new rows and newly created ROWIDs might not be in strictly ascending order.

Так что можно попробовать такое извращение: когда удаляешь строку, добавить строку с максимальным RAWID и тут же удалить её.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)