我寫了一個PL/SQL腳本序列的值設置爲一個表的主鍵的最大值:如何在Oracle 10g PL/SQL中獲得序列的MINVALUE?
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」,最簡單的方法是什麼?
呃,有沒有可能你目前的序列值高於表列中的最大值?如果不是這種情況,您可能需要將腳本更改爲僅更改序列。 – 2009-09-03 17:38:58
另一件事是,請記住在選擇NEXTVAL一次後重置INCREMENT BY。 – APC 2009-09-04 08:41:53