私はテーブルの主キーの最大値と配列の値を設定するPL/SQLスクリプトを書いた:Oracle 10g PL/SQLでシーケンスのMINVALUEを取得するにはどうすればよいですか?
:シーケンスの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;
ORA-08004:順序MBR_SEQ.NEXTVALはMINVALUEを下回るとインスタンス化することはできません
ORA-06512:行で10
"increment_amountでシーケンスをインクリメントするが、MINVALUEより下にはならない"と言うのが一番簡単な方法は何ですか?
のErm、あなたのコードの中にそれを組み込むことができるMIN_VALUE
を取得するためにDBA_SEQUENCESテーブルを照会することができますテーブルの列からの最大値?そうでない場合は、シーケンスを変更するようにスクリプトを変更することをお勧めします。 –
もう1つは、NEXTVALを1回選択した後にINCREMENT BYをリセットすることです。 – APC