ヘッダーをスキップ
Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド
リリース6.0
B25770-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

CREATE TABLE

CREATE TABLE文は、表を定義します。

アクセス制御

TimesTenインスタンスでアクセス制御が有効な場合、この文にはDDL権限が必要です。

SQL構文
永続表の構文は、次のとおりです。

CREATE TABLE [Owner.]TableName

(
    {{ColumnDefinition} [,...]
     [PRIMARY KEY (ColumnName [,...]) |
     [[CONSTRAINT ForeignKeyName]

        FOREIGN KEY ([ColumnName] [,...])

        REFERENCES RefTableName (ColumnName [,...])] [...] |
     }
)
[UNIQUE HASH ON (HashColumnName [,...])
    PAGES = PrimaryPages]

一時表の構文は、次のとおりです。

CREATE GLOBAL TEMPORARY TABLE [Owner.]TableName

(
    {{ColumnDefinition} [,...]
     [PRIMARY KEY (ColumnName [,...]) |
     [[CONSTRAINT ForeignKeyName]

        FOREIGN KEY ([ColumnName] [,...])

        REFERENCES RefTableName (ColumnName [,...])] [...] |
      }
)
[UNIQUE HASH ON (HashColumnName [,...])
    PAGES = PrimaryPages]
[ON COMMIT { DELETE | PRESERVE } ROWS ]
パラメータ

CREATE TABLE文には、次のパラメータがあります。

[Owner.]TableName
新しい表に割り当てる名前です。2つの表に同じ所有者名と表名を指定することはできません。

所有者名を指定していない場合は、ログイン名が新しい表の所有者名になります。TimesTenの表の所有者は、ユーザーIDの設定またはログイン名によって決まります。Oracle表の所有者名は、TimesTen表の所有者名と常に一致させる必要があります。

名前作成の規則については、「基本名」を参照してください。
GLOBAL TEMPORARY

作成する表を一時表にします。一時表は永続表と類似していますが、接続で参照された場合にのみ効率的にマテリアライズされます。

グローバル一時表定義は永続的であり、すべての接続に対して表示されますが、表インスタンスは各接続に対してローカルです。表インスタンスは、表を参照するコマンドが接続に対してコンパイルされる場合に作成され、接続が切断されると削除されます。同じ一時表のすべてのインスタンスの名前は同じですが、表名と追加の接続IDに基づいて識別されます。

一時表の内容は接続間で共有できません。各接続では、その接続の表の内容のみが表示され、一時表を参照するコンパイルされたコマンドは接続間で共有されません。

一時表は、キャッシュ・グループまたはレプリケーション・スキームの一部として使用できません。一時表は、DATASTOREレベルのレプリケーションが定義されるときに自動的に除外されます。

キャッシュ・グループ表は、一時表として定義できません。

一時表の変更は、XLAで追跡できません。

ローカルの一時表は、サポートされていません。

ColumnDefinition
表の個々の列です。各表には、列が少なくとも1つ必要です。詳細は、「列定義」を参照してください。
ColumnName
作成される表の主キー列の名前を指定します。主キーには最大16列を指定できます。外部キーでは、ColumnNameはオプションです。外部キーが指定されていない場合は、親表の主キーを参照します。
PRIMARY KEY
PRIMARY KEYは、表定義に一度だけ指定します。これによって、1つ以上の列が表の主キーを構成していることを示します。主キーの内容は一意である必要があります。列には、UNIQUEと単一列PRIMARY KEYの両方を指定することはできません。
CONSTRAINT ForeignKeyName
オプションのユーザー定義の名前を外部キーに指定します。ユーザーが指定しない場合は、システムによってデフォルトの名前が指定されます。
FOREIGN KEY

新しい表とRefTableNameによって識別される参照先の表の間で外部キー制約を指定します。外部キー制約で指定される列には、2つのリストがあります。

最初のリストには新しい表の列を指定します。この列は参照元列と呼ばれます。2番目のリストには参照先の表の列を指定します。この列は参照先列と呼ばれます。これらの2つのリストのデータ型は、長さ、精度、スケールなどが同じである必要があります。参照先の表の参照先列には、あらかじめ主キーまたは一意索引を作成しておく必要があります。

外部キーを宣言することにより、参照元列にTツリー索引、子表に索引が作成されます。参照先の表またはその参照先の索引は、新しく作成された表を削除しないかぎり削除できません。

外部キー制約によって、新しい表の各行と参照先の表の行は、参照元列の内容と参照先列の内容が同じになるように一致させる必要があります。INSERTDELETEまたはUPDATE文が制約に違反した場合、TimesTenエラー3001が返されます。

TimesTenでは、SQL-92 NO ACTIONの更新および削除規則がサポートされています。外部キー制約は遅延可能ではありません。

外部キーはグローバル一時表で定義できますが、グローバル一時表の参照のみを行うことができます。親表がCOMMIT DELETEを使用して定義されている場合は、子表にもCOMMIT DELETE属性が必要です。

外部キーは、アクティブな親表を参照できません。アクティブな親表とは、接続に対してマテリアライズされたインスタンスを持つ表のことです。

UNIQUE
列の各行の値が一意である必要があることを示します。
UNIQUE HASH ON
表のハッシュ索引です。一意のハッシュ索引のみが作成されます。このパラメータは、等価条件に使用します。詳細は、次項の説明を参照してください。UNIQUE HASH ONを指定するには、主キーの定義が必要です。
HashColumnName
この表のハッシュ・キーに含まれるよう表で定義された列です。ハッシュ索引で定義された列は、主キーの列と同じである必要があります。
PrimaryPages
表の想定ページ数を指定します。この数値に基づいて、ハッシュ索引用に作成されるハッシュ・バケットの数が決まります。最小値は1、最大値は268435456/256(228/256)です。想定したページ数が少なすぎると、パフォーマンスが低下します。
[ON COMMIT
{ DELETE | PRESERVE } ROWS]
グローバル一時表を作成するトランザクションがコミットされるときに、行を削除するか、または保存するかを指定するオプションの文です。この文が指定されていない場合は、一時表の行が削除されます。