3

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

我想改变currval.

我阻止了这个错误:

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

4

1 回答 1

4

您不会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.
于 2013-09-25T13:46:35.750 回答