Как столбец таблицы базы данных, основанный на последовательности, может иметь максимальное значение больше, чем сам sequence.nextval? - PullRequest
0 голосов
/ 14 апреля 2020

У нас есть столбец в таблице, который основан на последовательности (т. Е. Один порядковый номер). Мы видели сценарий, в котором максимальное значение этого столбца имеет значение, большее, чем у следующего значения самой последовательности , и это вызвало уникальную ошибку ограничения. Мы удалили и снова создали последовательность, чтобы начать с числа, превышающего максимальное значение столбца. Это решило проблему, однако это может произойти снова не только с этой таблицей, но и с другими таблицами, в которых мы реализовали аналогичный дизайн, если мы не знаем и не устраняем причину root - поэтому, мы хотим понять различные сценарии ios, при которой это может произойти .

Мы присваиваем следующее значение последовательности столбцу таблицы с помощью триггера BIU для таблицы только в том случае, если значение столбца равно NULL (я полагаю, что здесь есть лазейка, поскольку любая программа \ система может попытаться вставить случайные значения в этот столбец и может быть успешным, если вставляемое значение не конфликтует с существующими значениями столбца таблицы) - хотел изучить дальнейший сценарий ios, если таковые имеются.

Пожалуйста, ответьте, если вы пришли через любой подобный сценарий ios и узнайте причину root того же самого. Спасибо за ваше время.

PS: я уже пытался проверить в v $ sql, dba_hist_sql_text, чтобы найти любые sqls, которые вставляют любые другие значения в этот столбец, кроме sequence.nextval, но не смогли найти любой.

...