このトピックでは、PolarDB for PostgreSQL (Compatible with Oracle) がシーケンスオブジェクトを管理するために提供する関数について説明します。
シーケンスオブジェクト (シーケンスジェネレータまたはシーケンスとも呼ばれます) は、CREATE sequenceコマンドによって作成される特定の単一行テーブルです。 シーケンスオブジェクトは、テーブルの行の一意の識別子を生成するために使用されます。 次のシーケンス関数は、シーケンスオブジェクトから連続するシーケンス値を取得するためのシンプルでマルチユーザーセーフなメソッドを提供します。
構文
sequence.NEXTVAL
シーケンス。CURRVAL パラメーター
- sequence: CREATE sequenceコマンドでシーケンスに割り当てられた識別子。 次のセクションでは、上記の関数の使用方法について説明します。
- NEXTVAL: この関数は、シーケンス・オブジェクトをその次の値に進め、その値を返す。 この操作は、完了後は元に戻すことはできません。 複数のセッションが同時にNEXTVAL機能を実行する場合、各セッションは、異なるシーケンス値を安全に受信する。
- CURRVAL: この関数は、現在のセッションで指定されたシーケンスのNEXTVAL関数によって最近取得された値を返します。 (このセッションでこのシーケンスに対してNEXTVALが一度も呼び出されなかった場合、エラーが報告されます。) この関数はセッションローカル値を返します。 現在のセッションがNEXTVALを実行してから他のセッションがNEXTVALを実行しているかどうかに対する予測可能な回答を提供します。
シーケンスオブジェクトが既定のパラメーターを使用して作成されている場合、このオブジェクトのNEXTVAL関数を呼び出すと、1から始まる連続した値が返されます。 CREATE SEQUENCEコマンドで特定のパラメーターを使用して、他の動作を取得できます。
説明 同じシーケンスから番号を取得する同時トランザクションのブロックを回避するには、NEXTVAL操作をロールバックできません。 値が取得されると、それは使用されたと見なされます。 この値は、NEXTVALを行ったトランザクションが後でアボートした場合でも使用されたと見なされます。 これは、アボートされたトランザクションが、割り当てられた値のシーケンスに未使用の「ギャップ」を残すことを意味する。