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) でシーケンスをリセットする公正な方法はありますか?