1

要重置 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)中是否有这样一种公平的方式来重置序列?

4

1 回答 1

-1

这个怎么样 :

  1. 删除序列

     DROP TEMP_TABLE_SEQ;
    
  2. 重新创建序列

     CREATE SEQUENCE TEMP_TABLE_SEQ
     MINVALUE 1
     MAXVALUE  999999999999999999999
     START WITH 1
     INCREMENT BY 1
     CACHE 20;
    
于 2013-02-06T03:56:43.867 回答