Возможность этого для меня представляется крайне маловероятной из-за проблем, которые он может вызвать, но я решил, что все равно задам вопрос ...
Представьте себе транзакцию, в которой задействован идентификатор автоинкремента изначение назначено.Перед COMMIT соответствующий код кэширует копию назначенного идентификатора для последующего использования.Затем транзакция фиксируется.
При условии отсутствия прямого вмешательства клиента (удаления или изменения записи), существует ли какая-либо база данных или ситуация, которая когда-либо автоматически изменяла бы значение идентификатора сразу после COMMIT, делая кэшированноеНеверный идентификатор?Всегда ли безопасно кэшировать идентификатор в середине транзакции?
Один гипотетический случай, когда я могу себе представить, что это происходит, - это если какая-то реализация СУБД необъяснимым образом решила, что необходимо иметь бесщелевые и зависящие от времени значения автоинкремента (так как я вижу много примеров людей, желающих этого).В этом гипотетическом случае я могу представить, что может быть сделано какое-то волшебное перетасовывание идентификаторов, чтобы заполнить пробелы, вызванные откатами после присвоения идентификатора в другой транзакции (или другой пробел, вызывающий разрыв).Это сделает недействительным кэшированное значение.
Кто-нибудь знает о такой реализации или о другом убийце кэша?