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 サーバーでは、次の 1 つのステートメントだけでシーケンスをリセットできます。

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 に答える