Я написал сценарий PL/SQL, чтобы установить значение последовательности на максимальное значение первичного ключа таблицы:
DECLARE
max_idn NUMERIC(18, 0);
seq_nextval NUMERIC(18, 0);
increment_amount NUMERIC(18, 0);
BEGIN
SELECT MAX(mbr_idn)
INTO max_idn
FROM mbr;
SELECT mbr_seq.nextval
INTO seq_nextval
FROM DUAL;
increment_amount := max_idn - seq_nextval;
EXECUTE IMMEDIATE
'ALTER SEQUENCE mbr_seq
increment by ' || increment_amount;
END;
Однако я получаю сообщение об ошибке, если МИНИМАЛЬНОЕ ЗНАЧЕНИЕ последовательности больше, чем максимальный первичный ключ:
ORA-08004: последовательность MBR_SEQ.NEXTVAL ниже MINVALUE и не может быть создана
ORA-06512: в строке 10
Как проще всего увеличить последовательность на increment_amount, но не опускаться ниже MINVALUE?