シーケンス・ジェネレータの属性

表に追加する各IDENTITY列には、独自のシーケンス・ジェネレータ(SG)が必要です。SGは、必要に応じて値を取得したり、IDENTITY列に値を指定したりするなど、いくつかのタスクを担当します。

各IDENTITY列には、関連付けられた専用のシーケンス・ジェネレータ(SG)が必要です。IDENTITY列を追加すると、クライアントで実行されるSGがアプリケーションとともに作成されます。各SGのすべての属性に関する情報が、システム表SYS$SGAttributesTableに追加されます。次のような簡単な問合せを使用して、このシステム表の内容を確認できます。
SELECT * FROM SYS$SGAttributesTable
その他のコマンドの場合:
コマンドの相違点 説明
SHOW TABLES テーブルのリストを返します
DESCRIBE TABLE name1 name1のスキーマを示します
SELECT * FROM table_name table_nameのデータ行を表示します

IDENTITYフィールドのシーケンス・ジェネレータは、いくつかの処理を行います。表にIDENTITYを作成または追加する場合のSGの最初のタスクの1つは、クライアントで値のキャッシュを作成し、Current_Valueを設定することです。新しい行が追加されると、SGは、キャッシュの値をIDENTITYフィールドに割り当てます。デフォルトでは、Cache属性の値を指定しない場合、クライアントは1000個の値(1から開始)を格納します。キャッシュ値が要件を満たさない場合は、IDENTITYを作成するとき、または表が作成された後にこのサイズを増減できます。IDENTITY値をクライアントに格納することで、別の値が必要になるたびにアプリケーションがサーバーにアクセスする必要がなくなります。

Cycle属性を指定すると、IDENTITY列の既存の値がすべて再使用され、現在の値が上書きされる可能性があります。列をGENERATED ALWAYS AS IDENTITYとして作成し、SGのNO CYCLE属性を使用することは、一意のIDENTITY列値を維持する唯一の方法です。

次に、IDENTITY列を作成する際にオプションで指定できるSG属性、またはALTER TABLE文を使用して後で変更できるSG属性を示します。
属性 説明
Start With Number デフォルト: 1。順序内の最初の値。ゼロ(0)はStart With値として許可されますが、Increment By設定の場合は許可されません。
Increment By Long デフォルト: 1。現在の値を増分する値。正の数または負の数を指定できます。ゼロ(0)は、Increment By値として許可されません。Increment Byに負の数値を指定すると、Start With値から値が減分されます。
MinValue Number デフォルト: フィールドのデータ型の最小値。SGが提供するIDENTITY値の下限。MinValueまたはNo MinValueのいずれかを指定できますが、両方は指定できません。
No MinValue Number デフォルト: フィールド値の下限値が、フィールドのデータ型の最小値であることを指定します。No MinValueまたはMinValueのいずれかを指定できますが、両方は指定できません。
MaxValue Number デフォルト: フィールドのデータ型の最大値。SGが提供するIDENTITY値の上限。この属性を指定しない場合、SGではフィールドのデータ型の最大値が使用されます。MaxValueまたはNo MaxValueのいずれかを指定できますが、両方は指定できません。
No MaxValue Number デフォルト: SGが提供するIDENTITY値に、フィールドのデータ型の最大値以外の上限がないことを指定します。この属性を指定しない場合、SGではフィールドのデータ型の最大値が使用されます。No MaxValueまたはMaxValueのいずれかを指定できますが、両方は指定できません。
Cache Long デフォルト: 1000。次のIDENTITY値に使用するローカル・クライアントのキャッシュに格納される値の数。値のセットがすべて使用されると、SGは、ローカル・キャッシュに格納するために、サーバーから別の値のセットを要求します。
Cycle | NoCycle Boolean デフォルト: NoCycleは、IDENTITYのデータ型に対して使用可能なすべての値のセットを再利用するかどうかを決定します。Cycle属性は、異なる制限を設定するMaxValueを指定しないかぎり、特定のデータ型(INTEGER、LONGまたはNUMBER)のIDENTITYに対して生成される値の合計数に関連付けられます。Cycleを指定しない場合、Oracle NoSQL Databaseでは、列内の各IDENTITY値が一意になりますが、必ずしも連続しているとはかぎりません。たとえば、MaxValueを10000に設定し、複数のクライアントが表に行を追加する場合、各クライアントには使用する特定の数の値が割り当てられます。
次に内部SG属性を示します。IDENTITY列を作成または追加する場合、これらはいずれも指定できません。それぞれ、IDENTITYフィールドの作成方法から導出されます。たとえば、内部属性の1つにSGNameがあり、これはIDENTITYフィールドに指定する列名です。
属性 説明
SGType String [INTERNAL | EXTERNAL]。作成するか、DDL文を使用して表に追加するIDENTITY列。デフォルトはINTERNALです。
SGName String SGが関連付けられている、作成するIDENTITYフィールドの名前。
Datatype String IDENTITY列に対してCREATE TABLE文の一部として指定したシーケンス・ジェネレータのデータ型。各IDENTITY列は、INTEGERLONGまたはNUMBERのいずれかの数値型にできます。
SGAttrVersion Long これは、設定できない内部属性です。将来の使用に備えてここにあります。