シーケンスを作成すると、それを参照できるようになります。
シーケンスを使用する際は、CURRVAL と NEXTVAL の前にシーケンス名を付け、ピリオド(.)で区切る必要があります。
例えば、シーケンス名が SEQ_FOO の場合、SEQ_FOO.CURRVAL で SEQ_FOO シーケンスの現在値を取得できます。同様に、SEQ_FOO.NEXTVAL で SEQ_FOO シーケンスの次の自動増分値を取得できます。
シーケンスの CURRVAL と NEXTVAL の値は、以下の場所で使用できます:
トップレベルの
SELECTステートメントの選択リスト内。INSERTステートメント内のVALUE句内。UPDATEステートメント内のSET句内。
例:
obclient> SELECT SEQUENCE_NAME.NEXTVAL FROM DUAL; /*Sequenceが実行されるたびに、番号が1つずつ増加します*)
obclient> SELECT SEQUENCE_NAME.CURRVAL FROM DUAL; /*Sequenceを何度実行しても、番号は変わりません*/
NEXTVAL を初めて参照すると、シーケンスの初期値が返されます。その後の NEXTVAL の参照では、前回のシーケンスの戻り値にシーケンス定義のステップサイズを加算した新しい値が返されます。CURRVAL を参照すると、常にシーケンスの現在値、つまり最後に NEXTVAL が返した値が返されます。
セッション内でシーケンスの CURRVAL プセウドカラムを参照する前に、まずシーケンスの NEXTVAL プセウドカラムを適用して、そのセッションのシーケンス値を初期化する必要があります。
シーケンスを作成する際に、初期値と値の間の増分を定義できます。NEXTVAL への最初の参照はシーケンスの初期値を返します。その後の NEXTVAL の参照は、定義された増分だけシーケンス値を増加させ、新しい値を返します。CURRVAL へのいかなる参照も、常にそのシーケンスの現在値、つまり最後に NEXTVAL が返した値を返します。
他のシーケンスキャッシュの期限切れ問題を防ぐため、OceanBaseデータベースはV4.4.1バージョンから ALTER SYSTEM FLUSH SEQUENCE CACHE ステートメントを導入しました。これは、問題発生時の迅速な復旧を可能にするために、シーケンスキャッシュを手動でクリアするために使用されます。シーケンスキャッシュのクリアに関する詳細は、ALTER SYSTEM FLUSH SEQUENCE CACHEを参照してください。
関連ドキュメント
シーケンスに関するその他の操作については、以下のドキュメントを参照してください: