機能
順序とは、RDBシステム全体で一意な値を生成する機能です。順序の主な用途は主キー値の作成です。
定義した順序は、アプリケーションのSQL文中に順序を直接指定して使用する方法と、表定義のDEFAULT句に順序を指定して、自動的に取得した値を表に挿入する方法があります。
順序を使用すると、アプリケーションでSQL文実行時に意識することなく主キーを作成することができます。SQL文中に指定した順序の属性は、18桁の整数のNUMERIC型として扱われます。
記述形式
参照項番
日本語文字列 → “2.1.3 トークン”
権限
順序定義文を実行できるのは、スキーマ定義者およびCREATE権を付与された人です。
順序を使用したSQL文を実行できるのは、順序の定義者とSELECT権を付与された人です。
一般規則
順序番号の生成は、トランザクションのロールバックに関係なく増分値だけ増加します。たとえば、SQL文を実行して順序番号を生成後、そのトランザクションがロールバックしたため再度SQL文を実行した場合、同じ順序番号は生成されません。
CACHE指定により事前にメモリ上に保持した順序番号は、システムダウンすると消失します。システム再起動後は、次の順序番号から生成されます。
順序定義で順序保証指定“ORDER”を指定せずに割当順序数指定“CACHE”を指定している場合、ロードシェア機能利用時にシステムダウンが発生すると、順序番号が昇順または降順に生成されないことがあります。なお、順序番号の一意性は保証されます。
作成する順序の名前を指定します。
順序名には、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。
順序名は、スキーマ内で一意の名前であることが必要です。
順序定義がスキーマ定義に含まれる場合、順序名のスキーマ名の修飾を省略した場合は、スキーマ定義で指定したスキーマ名で修飾したとみなされます。また、スキーマ名で修飾する場合は、スキーマ定義で指定したスキーマ名であることが必要です。
初期値指定“START WITH”は、生成する順序番号の初期値を指定します。この句を指定した場合、順序番号の最小値より大きい値を初期値として昇順を開始することも、最大値よりも小さい値を初期値として降順を開始することもできます。この句を省略した場合、省略値は、昇順の場合は順序番号の最小値になります。降順の場合は順序番号の最大値になります。18桁以内の整数値を指定します。
最大値指定“MAXVALUE”は、順序番号の最大値を指定します。18桁以内の整数値を指定します。最大値は、初期値以上でかつ最小値を超える値である必要があります。この句を省略した場合、省略値には、昇順の場合は(10の18乗)-1、降順の場合は-1が指定されます。
最小値指定“MINVALUE”は、順序番号の最小値を指定します。18桁以内の整数値を指定します。最小値は、初期値以下でかつ最大値未満である必要があります。この句を省略した場合、省略値には、昇順の場合は1、降順の場合は-(10の18乗)+1が指定されます。
繰り返し指定“CYCLE”は、順序番号が最大値または最小値に達した場合、順序番号の生成を続行する場合に指定します。昇順の場合は、最大値に達すると最小値が生成されます。降順の場合は、最小値に達すると最大値が生成されます。
割当順序数指定“CACHE”は、より高速に順序番号を取得できるように、順序番号を事前にメモリ上に割り当てて保持し、メモリから取得する機能です。CACHEには割当順序数と保持順序数を指定します。
割当順序数は、メモリ上に割り当てておく順序番号の数を指定します。
保持順序数は、新たに順序番号をメモリ上に割り当てる契機を指定します。メモリ上に割り当てた順序番号が取得され、順序番号の残数が保持順序数に達すると、再度、割当順序数までメモリ上に順序番号を追加割り当てします。
割当順序数および保持順序数には、18桁以内の正の整数値を指定します。割当順序数に指定できる最小値は2です。また、保持順序数に指定できる最小値は0です。保持順序数は、割当順序数より小さい値を指定する必要があります。保持順序数を省略した場合、0が指定されたとみなします。
使用例
順序“順序1”を定義します。順序の増分値と初期値は1を指定します。最大値は100を指定します。
CREATE SEQUENCE S1.順序1 INCREMENT BY 1 START WITH 1 MAXVALUE 100