Я пытаюсь реализовать последовательность в базе данных Oracle, чтобы действовать как создатель суррогатного ключа для таблицы.Из соображений производительности я хочу, чтобы эта последовательность кэшировалась.Я читал, что при использовании кэшированных последовательностей возможны подводные камни, поскольку откаты и ошибки экземпляров приводят к пропущенным значениям.
Это заставило меня задуматься.Допустим, я создаю последовательность с размером кэша 100. Затем я делаю вставку из 50 записей в свою таблицу со значением последовательности в качестве первичного суррогатного ключа.После фиксации текущее значение последовательности еще не было записано на диск.Предположим, в этот момент у меня произошел сбой экземпляра.Когда база данных возвращается, я понимаю, что текущее значение последовательности будет сброшено до последнего значения, записанного на диск.
Если бы я попытался вставить еще 50 записей в мою таблицу, я сейчас сломаюограничение первичного ключа, поскольку последовательность была сброшена с диска до последнего состояния, а первичные ключи теперь используются повторно?Если это так, как бы я это предотвратить?