ヘッダーをスキップ
Oracle TimesTen In-Memory Database SQLリファレンス・ガイド
リリース11.2.1
B56051-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

CREATE SEQUENCE

CREATE SEQUENCE文は、一意な整数を生成し複数のユーザーで使用するための、順序番号ジェネレータを新しく作成します。 CREATE SEQUENCE文を使用して、順序の初期値を定義します。また、増分値、最大値または最小値を定義し、順序が最小値または最大値に達した後、数値の生成を続行するかどうかを指定します。

必要な権限

CREATE SEQUENCE(所有者の場合)またはCREATE ANY SEQUENCE(非所有者の場合)

SQL構文

CREATE SEQUENCE [Owner.]SequenceName
       [INCREMENT BY IncrementValue]
       [MINVALUE MinimumValue]
       [MAXVALUE MaximumValue]
       [CYCLE]
       [CACHE CacheValue]
       [START WITH StartValue]

パラメータ

CREATE SEQUENCEには、次のパラメータがあります。

パラメータ 説明
SEQUENCE [Owner.]SequenceName 順序番号ジェネレータの名前です。
INCREMENT BY IncrementValue 連続する数値の増分値です。この値は正または負の整数値です。0は指定できません。値が正の場合は昇順になります。負の場合は降順になります。 デフォルト値は1です。降順では、範囲はMAXVALUEからMINVALUEへ変化し、昇順ではその逆になります。
MINVALUE MinimumValue 順序の最小値を指定します。 デフォルトの最小値は1です。
MAXVALUE MaximumValue 昇順の最大値、または降順の開始値です。デフォルトの最大値は、(263) -1です。この値は、BIGINTの最大値です。
CYCLE 順序番号ジェネレータが最大値または最小値に達した後、数値の生成を続行するかどうかを指定します。デフォルトでは、順序はサイクルしません。昇順で数値が最大値に達すると、順序は始めに戻り、最小値から値を生成し続けます。降順で最小値に達すると、順序値は最大値に戻ります。 CYCLEが指定されていない場合、最大/最小値に達すると順序番号ジェネレータは値の生成を停止し、エラーが返されます。
CACHE CacheValue CACHEは毎回キャッシュを行うタイミングとなる数値の範囲を示します。再起動すると、キャッシュされた未使用の値は失われます。 CacheValueに1を指定した場合、順序を使用するたびにデータベースに対して更新が発生します。キャッシュ値が大きいほど、データベースへの変更およびオーバーヘッドは少なくなります。 デフォルト値は20です。
START WITH StartValue 生成する最初の順序番号を指定します。 この句を使用して、その最小値よりも大きい値から昇順順序を開始、あるいはその最大値よりも小さい値から降順順序を開始します。 StartValueには、MinimumValue以上、MaximumValue以下の値を指定する必要があります。

説明

CURRVALとNEXTVALによるSEQUENCE値の増加

SQL文でSEQUENCE値を参照するには、CURRVALとNEXTVALを使用します。


注意:

CYCLE属性が指定された順序はレプリケートできません。

順序を作成します。

CREATE SEQUENCE mysequence INCREMENT BY 1 MINVALUE 2
       MAXVALUE 1000;

この例では、tab1は表内に1行のデータを持ち、CYCLEが使用されているとします。

CREATE SEQUENCE s1 MINVALUE 2 MAXVALUE 4 CYCLE;
SELECT s1.NEXTVAL FROM tab1;
/* Returns the value of 2; */
SELECT s1.NEXTVAL FROM tab1;
/* Returns the value of 3; */
SELECT s1.NEXTVAL FROM tab1;
/* Returns the value of 4; */

最大値に達した後、最小値から昇順でサイクルを開始します。

SELECT s1.NEXTVAL FROM tab1;
/* Returns the value of 2; */

順序を作成して順序番号を生成するには、次の文を使用します。

CREATE SEQUENCE seq INCREMENT BY 1;
INSERT INTO student VALUES (seq.NEXTVAL, 'Sally');

UPDATE SET句で順序を使用するには、次の文を使用します。

UPDATE student SET studentno = seq.NEXTVAL WHERE name = 'Sally';

問合せで順序を使用するには、次の文を使用します。

SELECT seq.CURRVAL FROM student;

関連項目

「DROP SEQUENCE」