CREATE SEQUENCE
CREATE SEQUENCE文は、一意な整数を生成し複数のユーザで使用するための、順序番号ジェネレータを新しく作成します。CREATE SEQUENCE文を使用して、順序の初期値、増分値、最大値、最小値、および順序のサイクルを指定できます。
アクセス制御
TimesTenインスタンスでアクセス制御が有効な場合、この文にはDDL権限が必要です。
SQL構文
CREATE SEQUENCE [Owner.]SequenceName
[INCREMENT BY IncrementValue]
[MINVALUE MinimumValue]
[MAXVALUE MaximumValue]]
[CYCLE]
パラメータ
CREATE SEQUENCEには、次のパラメータがあります。
SEQUENCE [Owner.]SequenceName | 順序番号ジェネレータの名前です。 |
IncrementValue | 連続する数値の増分値です。この値は正または負の整数値です。0は指定できません。値が正の場合は昇順になります。負の場合は降順になります。デフォルト値は1です。降順では、範囲はMAXVALUEからMINVALUEへ変化し、昇順ではその逆になります。 |
MINVALUE | 昇順の開始値です。デフォルトの最小値は1です。 |
MAXVALUE | 昇順の最大値、または降順の開始値です。デフォルトの最大値は、(263) -1です。この値は、BIGINTの最大値です。
|
CYCLE | 順序番号ジェネレータが最大値または最小値に達した後、数値の生成を続行するかどうかを指定します。デフォルトでは、順序はサイクルしません。昇順で数値が最大値に達すると、順序は始めに戻り、最小値から値を生成し続けます。降順で最小値に達すると、順序値は最大値に戻ります。CYCLEが指定されていない場合、最大/最小値に達すると順序番号ジェネレータは値の生成を停止し、エラーが返されます。 |
説明
CURRVALとNEXTVALによるSEQUENCE値の増加
SQL文でSEQUENCE値を参照するには、CURRVALとNEXTVALを使用します。
- CURRVALは、現在のセッションでNEXTVALがコールされていればその最新の値を返し、コールされていなければエラーを返します。
- NEXTVALは、指定された増分で順序の現在値を増加させ、アクセスされた行ごとに値を返します。
- NEXTVALとCURRVALは、次の場合に使用できます。
- SELECT文のSelectList。ただし、副問合せのSelectListは除きます。
- 1つのSQL文で複数のNEXTVAL参照を使用した場合、TimesTenでは順序を一度だけ増加させ、すべてのNEXTVALに対して同じ値が返されます。
- SQL文にNEXTVALとCURRVALの両方が含まれている場合は、NEXTVALが最初に実行されます。CURRVALとNEXTVALは、SQL文では同じ値を持ちます。
- 順序の現在値は、接続ごとに異なります。同じデータ・ストアに2つの同時接続がある場合、各接続は同じ順序について、最後のNEXTVAL参照により設定された独自のCURRVALを取得します。
- リカバリでは、順序はロールバックされません。順序の値の範囲に幅を持たせることができます。順序の各値は一意のままです。
- 最大値に達した場合、CREATE SEQUENCEのCYCLEオプションの値によって、SEQUENCEはサイクルする(開始値に戻る)か、エラー文を生成します。
注意: CYCLE属性が指定された順序はレプリケートできません。
例13.39
例13.40
この例では、tab1は表内に1行のデータを持ち、CYCLEが使用されているとします。
例13.41
順序を作成して順序番号を生成するには、次の文を使用します。
例13.42
UPDATE SET句で順序を使用するには、次の文を使用します。
例13.43
問合せで順序を使用するには、次の文を使用します。
関連項目
DROP SEQUENCE