シーケンス・ジェネレータの属性
表に追加する各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列は、INTEGER 、LONG またはNUMBER のいずれかの数値型にできます。
|
SGAttrVersion |
Long |
これは、設定できない内部属性です。将来の使用に備えてここにあります。 |