シーケンスの値をテーブルの主キーの最大値に設定する 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;
ただし、シーケンスの MINVALUE が最大主キーより大きい場合、エラーが発生します。
ORA-08004: シーケンスMBR_SEQ.NEXTVALがMINVALUEを下回り、インスタンス化できません
ORA-06512: 10行目
「increment_amount だけシーケンスを増やしますが、MINVALUE を下回らないようにする」と言う最も簡単な方法は何ですか?