我正在使用 oracle 11g 的 toad,我尝试alter 使用sequenceUI(用户界面)。
我想改变currval.
我因以下错误而阻止:
ORA-04007: MINVALUE 不能超过当前值
您不会currval直接更改序列的伪列的值 - 每次引用nextval序列的伪列时,其值都会发生变化。听起来更像是您想发出一条alter sequence语句来更改其minvalue参数。
如果序列的当前值小于minval您尝试更改的值,则会引发错误。您至少有两个选择来完成它:
minvalue使用参数的新值完全重新创建序列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)