増分せずに Oracle シーケンス値を取得する
Oracle シーケンスの現在値を増分せずに取得するには、次の SQL ステートメントを使用できます。 :
SELECT last_number FROM all_sequences WHERE sequence_owner = '<sequence owner>' AND sequence_name = '<sequence_name>';
このステートメントは、指定されたシーケンスによって生成された最後の数値を取得します。シーケンス値を変更します。
または、次のビューは、最後に生成された値を含むシーケンス メタデータを提供できます。
たとえば、という名前のシーケンスの現在の値を取得するにはデフォルトのスキーマの「SEQ」:
SELECT last_number FROM user_sequences WHERE sequence_name = 'SEQ';
シーケンスのキャッシュ サイズがこのメソッドの信頼性に影響を与える可能性があることに注意してください。キャッシュ サイズが 1 より大きい場合、シーケンスには増分せずに取得できる複数の値がキャッシュされている可能性があります。これに対処するには、次の例に示すように、シーケンスの増分を負の値に設定してから元の値に戻すことができます。
-- Set the sequence to decrement by the same as its original increment ALTER SEQUENCE seq INCREMENT BY -1; -- Retrieve the sequence value SELECT seq.nextval FROM dual; -- Reset the sequence to its original increment ALTER SEQUENCE seq INCREMENT BY 1;
以上がインクリメントせずに Oracle シーケンスの現在値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。