在Oracle 10g中重置序列的最佳方法是什么?

时间:2013-02-06 03:49:51

标签: oracle oracle10g

要重置Oracle序列,请遵循以下临时方法。比方说,我有一个名为TEMP_TABLE的表,其中包含与之关联的序列。

以下SQL生成 22 作为序列下一个值(仅在这种情况下)。

SELECT TEMP_TABLE_SEQ.NEXTVAL from DUAL;

以下语句将缓存大小减少到SEQUENCE.MINVALUE

ALTER SEQUENCE TEMP_TABLE_SEQ INCREMENT BY -21;

接下来,我正在执行一个虚拟选择,检索 1 作为序列值。

SELECT TEMP_TABLE_SEQ.NEXTVAL from DUAL;

我现在正在将缓存大小重置为 1

ALTER SEQUENCE TEMP_TABLE_SEQ INCREMENT BY 1;

以下声明,

SELECT TEMP_TABLE_SEQ.NEXTVAL from DUAL;

给我 2 作为下一个序列值,依此类推。


在PostgreSQL服务器中,以下只有一个语句足以重置序列。

ALTER SEQUENCE TEMP_TABLE_SEQ RESTART WITH 0;

在Oracle(10g)中是否有这样一种公平的方式来重置序列?

1 个答案:

答案 0 :(得分:0)

这个怎么样:

  1. 删除序列

     DROP TEMP_TABLE_SEQ;
    
  2. 重新创建序列

     CREATE SEQUENCE TEMP_TABLE_SEQ
     MINVALUE 1
     MAXVALUE  999999999999999999999
     START WITH 1
     INCREMENT BY 1
     CACHE 20;