3.16.1 CREATE SEQUENCEの形式と規則
(1) 機能
順序数生成子を定義します。
(2) 使用権限
- スキーマを所有するユーザ
-
RDエリア利用権限のある私用RDエリア,又は公用RDエリアに順序数生成子を定義できます。
(3) 形式
CREATE SEQUENCE 〔認可識別子.〕順序数生成子識別子 〔 FOR PUBLIC USAGE〕 〔 順序数生成子オプション列〕 〔 IN 順序数生成子格納RDエリア名〕 順序数生成子オプション列::=順序数生成子オプション〔 順序数生成子オプション〕… 順序数生成子オプション::={順序数生成子データ型オプション |共通順序数生成子オプション列} 共通順序数生成子オプション列::=共通順序数生成子オプション 〔 共通順序数生成子オプション〕… 共通順序数生成子オプション::={順序数生成子開始オプション |基本順序数生成子オプション} 基本順序数生成子オプション::={順序数生成子増分オプション |順序数生成子最大値オプション |順序数生成子最小値オプション |順序数生成子循環オプション |順序数生成子ログ出力間隔オプション} 順序数生成子データ型オプション ::=AS データ型 順序数生成子開始オプション ::=START WITH 開始値 順序数生成子増分オプション ::=INCREMENT BY 増分 順序数生成子最大値オプション ::={MAXVALUE 最大値|NO MAXVALUE} 順序数生成子最小値オプション ::={MINVALUE 最小値|NO MINVALUE} 順序数生成子循環オプション ::={CYCLE|NO CYCLE} 順序数生成子ログ出力間隔オプション::=LOG INTERVAL出力間隔
(4) オペランド
(a) 〔認可識別子.〕順序数生成子識別子
- 認可識別子
-
定義する順序数生成子の所有者になるユーザの認可識別子を指定します。
省略した場合,実行するユーザの認可識別子を仮定します。
- 順序数生成子識別子
-
順序数生成子の識別子を指定します。
(b) FOR PUBLIC USAGE
すべてのユーザが使用可能な順序数生成子を定義する場合に指定します。
省略した場合,所有者だけが使用できる順序数生成子となります。
(c) IN 順序数生成子格納RDエリア名
順序数生成子を格納するユーザ用RDエリア名を指定します。
インナレプリカ機能を適用したRDエリア,及び一時表用RDエリアは指定できません。
RDエリア名を省略した場合,次に示す優先順位で順序数生成子を格納するRDエリアを決定します。
-
一時表用RDエリア以外のインナレプリカ機能を適用しないRDエリアのうち,定義されている表と順序数生成子の合計が一番少ない公用RDエリア
-
1の条件を満たすRDエリアが複数ある場合は,HiRDBが最初に見付けたRDエリア
-
2で決定できなかった場合はエラーになります。
(d) 順序数生成子オプション列
順序数生成子オプション列には,同一のオプションを繰り返して指定できません。
(e) 順序数生成子データ型オプション::=AS データ型
順序数生成子が生成する値のデータ型を指定します。
データ型にはINTEGER,SMALLINT,位取り0のDECIMALが指定できます。
このオプションを省略した場合,INTEGERが仮定されます。
(f) 順序数生成子開始オプション::=START WITH 開始値
順序数生成子の開始値となる整数値を指定します。
順序数生成子を定義した後,最初にNEXT VALUE式を実行すると順序数生成子は開始値を返します。
順序数生成子開始オプションには,順序数生成子最小値以上で,かつ,順序数生成子最大値以下の整数値を指定します。
このオプションを省略した場合,昇順順序数生成子ならば順序数生成子最小値,降順順序数生成子ならば順序数生成子最大値が仮定されます。
昇順順序数生成子及び降順順序数生成子については順序数生成子増分オプションを参照してください。
(g) 順序数生成子増分オプション::=INCREMENT BY 増分
順序数生成子が生成した値(現在値)を更新するときに加算する値を指定します。
増分が正なら昇順順序数生成子,負なら降順順序数生成子となります。
順序数生成子増分オプションには0以外で次の条件を満たす整数を指定します。
-
増分≦順序数生成子データ型の最大値
-
増分≧順序数生成子データ型の最小値
このオプションを省略した場合,1が仮定されます。
(h) 順序数生成子最大値オプション::={MAXVALUE 最大値|NO MAXVALUE}
順序数生成子が生成する値(順序番号)の最大値を指定します。
順序数生成子最大値オプションに最大値を設定する場合,次の条件を満たす必要があります。
-
順序数生成子最大値≦順序数生成子データ型の最大値
-
順序数生成子最大値>順序数生成子最小値
-
順序数生成子最大値≧順序数生成子開始値
このオプションを省略した場合,又はNO MAXVALUEを指定した場合は,その順序数生成子データ型の最大値が仮定されます。
(i) 順序数生成子最小値オプション::={MINVALUE 最小値|NO MINVALUE}
順序番号の最小値を指定します。
順序数生成子最小値オプションに最小値を設定する場合,次の条件を満たす必要があります。
-
順序数生成子最小値≧順序数生成子データ型の最小値
-
順序数生成子最小値<順序数生成子最大値
-
順序数生成子最小値≦順序数生成子開始値
このオプションを省略した場合,又はNO MINVALUEを指定した場合は,その順序数生成子データ型の最小値が仮定されます。
(j) 順序数生成子循環オプション::={CYCLE|NO CYCLE}
順序数生成子が生成できる値が最大値又は最小値を超えたときに,順序番号の循環をするかどうかを指定します。順序数生成子循環オプションにCYCLEを指定した場合の動作を次に示します。
-
昇順順序数生成子の場合
順序数生成子最大値を超えたときに,順序数生成子は順序数生成子最小値を順序番号として生成します。
-
降順順序数生成子の場合
順序数生成子最小値を超えたときに,順序数生成子は順序数生成子最大値を順序番号として生成します。
なお,順序数生成子が循環したときは重複した番号が発生します。
このオプションを省略した場合,又はNO CYCLEを指定した場合の動作を次に示します。
-
昇順順序数生成子の場合
順序数生成子最大値を超えるときにエラーとなります。
-
降順順序数生成子の場合
順序数生成子最小値を超えるときにエラーとなります。
(k) 順序数生成子ログ出力間隔オプション::={LOG INTERVAL 出力間隔}
順序数生成子のログを出力する間隔を指定します。
出力間隔を大きく指定することで,ログの出力回数を削減し処理性能が向上します。ただし,システム障害が発生し,出力間隔を2以上に指定した場合,最大で出力間隔の数だけ順序番号に欠番が発生する可能性があります。出力間隔に1を指定した場合,又はこのオプションを省略した場合は欠番が発生しません。
出力間隔は,1〜231-1の範囲で,かつ次に示す条件を満たす必要があります。
出力間隔≦(↓(順序数生成子最大値−順序数生成子最小値)÷増分↓)の絶対値
このオプションを省略した場合は1が仮定されます。
順序数生成子ログ出力間隔の詳細については,マニュアル「HiRDB UAP開発ガイド」を参照してください。
(5) 共通規則
-
順序数生成子は,一つのRDエリアに表と合わせて最大500個定義できます。
-
順序番号の生成規則を次に示します。
-
指定した順序数生成子が1回も使用されていない状態にある場合,順序数生成子の開始値を返却し,現在値に開始値を設定します。
-
指定した順序数生成子が1回以上使用されている状態の場合,現在値の次の値を返却し,現在値に増分を加算します。
-
(6) 留意事項
CREATE SEQUENCEは,OLTP下のX/Openに従ったUAPからは指定できません。
(7) 使用例
順序数生成子(SEQ1)を次に示す条件で定義します。
-
RDエリア"RDA1"に格納
-
INTEGER型
-
開始値1
-
増分1
-
最大値999
-
最小値1
-
循環なし
-
ログ出力間隔20
CREATE SEQUENCE USER1.SEQ1 AS INTEGER START WITH 1 INCREMENT BY 1 MAXVALUE 999 MINVALUE 1 NO CYCLE LOG INTERVAL 20 IN RDA1