В моем случае у меня есть последовательность под названием PS_LOG_SEQ
, которая имеет LAST_NUMBER = 3920
.
Затем я импортировал некоторые данные из PROD
на свой локальный компьютер и вставил в таблицу PS_LOG
. Производственные данные имели более 20000
строк, причем последний LOG_ID (первичный ключ) был 20070. После импорта я попытался вставить новые строки в эту таблицу, но при сохранении я получил исключение, подобное этому:
ORA-00001: unique constraint (LOG.PS_LOG_PK) violated
Конечно, это связано с последовательностью PS_LOG_SEQ
, связанной с таблицей PS_LOG
. LAST_NUMBER
сталкивался с данными, которые я импортировал, которые уже использовали следующее значение идентификатора из PS_LOG_SEQ
.
Чтобы решить, что я использовал эту команду, чтобы обновить последовательность до последней \ max(LOG_ID)
+ 1:
alter sequence PS_LOG_SEQ restart start with 20071;
Эта команда сбрасывает значение LAST_NUMBER
, и тогда я могу вставить новые строки в таблицу. Нет больше столкновения. :)
Примечание: эта alter sequence
команда является новой в Oracle 12c.