順序ジェネレータ
順序ジェネレータは、一連の整数を生成するサービスです。表に追加する各IDENTITY列には、独自のシーケンス・ジェネレータ(SG)が必要です。SGは、必要に応じて値を取得したり、IDENTITY列に値を指定したりするなど、いくつかのタスクを担当します。
SYS$SGAttributesTable
に追加されます。次のような簡単な問合せを使用して、このシステム表の内容を確認できます。SELECT * FROM SYS$SGAttributesTable
その他のコマンドの場合:
コマンドの相違点 | 説明 |
---|---|
SHOW TABLES |
テーブルのリストを返します |
DESCRIBE TABLE name1 |
表name1のスキーマを示します |
SELECT * FROM table_name |
table_nameのデータ行を表示します |
構文
sequence_generator_attributes ::=
(START WITH signed_int) |
(INCREMENT BY signed_int) |
(MAXVALUE signed_int) | (NO MAXVALUE) |
(MINVALUE signed_int) | (NO MINVALUE) |
(CACHE INT) | (NO CACHE) |
CYCLE | (NO CYCLE)
セマンティクス
Oracle NoSQL Databaseでは、アイデンティティ列にアタッチされた順序ジェネレータのみがサポートされています。IDENTITY列の使用を参照してください。生成される順序の番号は、順序ジェネレータ属性の属性によって異なります。
次に、IDENTITY列を作成する際にオプションで指定できるSG属性、またはALTER TABLE文を使用して後で変更できるSG属性を示します。
属性 | 型 | 説明 |
---|---|---|
START WITH |
Integer | 順序内の最初の値。ゼロ(0)はStart With 値として許可されます。
デフォルト値: |
INCREMENT BY |
Integer | 順序内の次の値は、順序の現在の値にINCREMENT BY値を追加して生成されます。増分値には正の数または負の数を指定できます。ゼロ(0)は、Increment By 値として許可されません。Increment By に負の数値を指定すると、順序の現在の値から値が減分されます。
デフォルト値: |
MINVALUE |
Integer | SGが提供するIDENTITY値の下限。MINVALUE またはNO MINVALUE のいずれかを指定できますが、両方は指定できません。
デフォルト値: |
NO MINVALUE |
Integer | SGが提供するIDENTITY値の下限がないことを指定します。SGは、INTEGERデータ型の最小値(-2^31 )をIDENTITY値の下限として使用します。MINVALUE またはNO MINVALUE のいずれかを指定できますが、両方は指定できません。
|
MAXVALUE |
Integer | SGが提供するIDENTITY値の上限。MAXVALUE またはNO MAXVALUE のいずれかを指定できますが、両方は指定できません。
デフォルト値: |
NO MAXVALUE |
Integer | SGが提供するIDENTITY値の上限がないことを指定します。SGは、INTEGERデータ型の最大値(2^31-1)をIDENTITY値の上限として使用します。MAXVALUE またはNO MAXVALUE のいずれかを指定できますが、両方は指定できません。
|
CACHE |
Integer | この属性の値は、順序ジェネレータに対してリクエストが行われるたびに生成される順序番号のカウントを指定します。これらのリクエストはOracle NoSQL Databaseクライアントで行われ、サーバーに存在する順序ジェネレータによって処理されます。具体的には、各リクエストで生成された数がクライアントに返信され、そこでキャッシュされます。クライアントがIDENTITY列に値を割り当てる必要がある場合は、常に、キャッシュの次の順序番号が使用されます。キャッシュが空の場合、キャッシュ順序番号の別のバッチのリクエストが順序ジェネレータに送信されます。
複数のクライアントが、このように一意の値について定義されたIDENTITY列を持つ表にアクセスする場合、各クライアントには、連続した値セットがそのSGキャッシュに割り当てられます。これらのセットは、他のクライアント・セットと重複しません。たとえば、Client1には値
デフォルト値: |
NO CACHE |
Integer | ローカル・キャッシュがSGで使用されていないことを指定します。CACHE またはNO CACHE のいずれかを指定できますが、両方は指定できません。
|
CYCLEまたはNO CYCLE |
Boolean |
IDENTITY列のデータ型の最大値または最小値に達した後、SGが値の生成を続行するかどうかを決定します。昇順の順序が最大値に達した後に、最小値を生成します。降順の順序が最小値に達した後に、最大値を生成します。
デフォルト値: ノート: CYCLE 属性を指定した場合、IDENTITY列の既存の値がすべて再使用され、現在の値が上書きされる可能性があります。列をGENERATED ALWAYS AS IDENTITYとして作成し、SGのNO CYCLE 属性を使用することが、一意のIDENTITY列値を維持する唯一の方法です。
|
次に内部SG属性を示します。IDENTITY列を作成または追加する場合、これらはいずれも指定できません。それぞれ、IDENTITYフィールドの作成方法から導出されます。たとえば、内部属性の1つにSGName
があり、これはIDENTITYフィールドに指定する列名です。
属性 | 型 | 説明 |
---|---|---|
SGType |
文字列 | [INTERNAL | EXTERNAL ]。作成するか、DDL文を使用して表に追加するIDENTITY列。デフォルトはINTERNAL です。
|
SGName |
文字列 | SGが関連付けられている、作成するIDENTITYフィールドの名前。 |
Datatype |
文字列 | IDENTITY列に対してCREATE TABLE 文の一部として指定したシーケンス・ジェネレータのデータ型。各IDENTITY列は、INTEGER、LONGまたはNUMBERのいずれかの数値型にできます。
|
SGAttrVersion |
Long | これは、設定できない内部属性です。将来の使用に備えてここにあります。 |