3

私はOracle 11gにヒキガエルを使用しています.UI(ユーザーインターフェイス)を使用してみましalter た。sequence

を変更したいcurrval

私はこのエラーでブロックします:

ORA-04007: MINVALUEは現在の値を超えることはできません

4

1 に答える 1

4

シーケンスの疑似列の値を直接変更することはありません。currvalその値は、シーケンスの疑似列を参照するたびに変更されますnextval。パラメータalter sequenceを変更するステートメントを発行したいようです。minvalue

minvalシーケンスの現在の値が、変更しようとしている値より小さい場合、エラーが発生します。それを行うには、少なくとも 2 つのオプションがあります。

  1. minvalueパラメータの新しい値でシーケンスを完全に再作成します
  2. 値を変更incremet byし、次の値を生成し、minvalパラメータを変更してから、increment by値を元に戻します。

次に例を示します。

create sequence seq
increment by 1
minvalue 1

sequence SEQ created.

-- trying to change minvalue
alter sequence seq 
  minvalue 5

SQL Error: ORA-04007: MINVALUE cannot be made to exceed the current value


select seq.nextval
  from dual

NEXTVAL
------------
         1 

-- alter increment by
alter sequence seq
   increment by 4

select seq.nextval
  from dual

NEXTVAL
----------
       5 

-- altering minvalue
alter sequence seq 
  minvalue 5

sequence SEQ altered.

-- change increment by to 1 as it was before
alter sequence seq
   increment by 1

sequence SEQ altered.
于 2013-09-25T13:46:35.750 に答える