如何解决 ORA-04007

3 sql oracle oracle11g

我正在使用 oracle 11g 的 toad,我尝试alter 使用sequenceUI(用户界面)。

我想改变currval.

我因以下错误而阻止:

ORA-04007: MINVALUE 不能超过当前值

Nic*_*nov 5

您不会currval直接更改序列的伪列的值 - 每次引用nextval序列的伪列时,其值都会发生变化。听起来更像是您想发出一条alter sequence语句来更改其minvalue参数。

如果序列的当前值小于minval您尝试更改的值,则会引发错误。您至少有两个选择来完成它:

  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.
Run Code Online (Sandbox Code Playgroud)