我编写了一个 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”的最简单方法是什么?