当表空时,序列以1开始

时间:2012-10-05 16:52:38

标签: oracle sequence

  

可能重复:
  How do I reset a sequence in Oracle?

我在oracle db中有一个表。该表总是包含大量行,比如数十万行。我在该表中设置了一个id并使用了一个序列和一个触发器,这样每次插入记录时都会自动生成并插入id。现在,在通过java代码遍历现有行时,有时可以截断该表中的数据并插入新行。在这种情况下,我希望序列在表为空时从1开始重新开始。

序列看起来像

CREATE SEQUENCE DUMMY_DETAILS_SEQ
  START WITH 356005
  MAXVALUE 999999999999999999999999999
  MINVALUE 1
  NOCYCLE
  CACHE 20
  NOORDER;

1 个答案:

答案 0 :(得分:0)

如果表变空并且您需要重置序列,则必须删除它然后重新创建它。使用接收表名,表ID字段和序列名称的过程来执行此操作。

此外,您可以找到当前值并使用增量减去负值,然后将其重置为零。

alter sequence seq increment by -inc_value minvalue 0;