Возьмем для примера простейшую таблицу:
CREATE TABLE tbl(key INTEGER PRIMARY KEY, cap TEXT NOT NULL);
Если вставить новую запись с полем cap='AAA' (INSERT), удалить ее (DELETE)
и вставить новую (INSERT) с cap='BBB'.
То по крайней мере в sqlite запись с cap='AAA' и c cap='BBB'
будут иметь одинаковый "key" (имеется ввиду удаленная запись с cap='AAA'
имела скажем key=1, и новая запись тоже будет иметь key=1).
Я разрабатываю приложение, которое должно позволить
открывать одну и ту же запись в разных независимых окнах (вернее множество
записей пересечение которые может быть не нулевое, но для упрощение ограничимся
одной записью).
И вот допустим мы прочитали какую-то запись из таблицы,
превратили ее в объект,и открыли этот объект в нескольких окнах.
В одном окне мы нажали кнопку удалить, потом создали новую запись,
в это время у нас все еще открыто третье окно в котором данные уже
удаленной записи, допустим мы в нем что-то меняем и нажимаем сохранить,
и получится ерунда какая-то, если использовать "key" как уникальный
идентификатор объекта базы.
Что в таким случаях делают, вводят типа "кэш" между классами отвечающими
за работу с базой и программой, и все GUI работающее с базой подписываются
на события "кэша" и если в одном окне объект удаляется, то "кэш" извещает
окна что такого объекта нет?