asviridenkov |
---|
Я деталей реализации сервера не знаю, но мне казалось что в таблице как-то помечается факт наличия незакоммиченных изменений И вообще отслеживается как и кем она использовалась. Выдаются же ошибки вида object in use |
во-первых, "детали реализации" не знать - это круто. есть же статья
http://www.ibase.ru/devinfo/mga.htmво-вторых, object in use означает наличия обращений к таблице, т.е. структура таблицы загружена в кэш метаданных и используется какими-то запросами. К хранимым данным это (object) не имеет абсолютно никакого отношения.
в третьих, факт наличия незакоммиченых изменений никак не помечается. Вернее, есть savepoints, но они внутри конкретной транзакции. Другая транзакция о незакоммиченых изменениях может узнать только ПРОЧИТАВ эти самые незакоммиченые изменения (т.е. версии измененных записей). А признаком "незакоммичености" будет активное состояние транзакции, идентификатор которой записан в этих самых версиях.
Это же версионник, не блокировочник, никаких "локов записей" в памяти не держит. И по сейэвпойнтам транзакции друг у друга не определяют, кто что изменил, потому что в этом нет никакой необходимости.