CREATE AUXILIARY TABLE ステートメント

CREATE AUXILIARY TABLE ステートメントは、LOB データを格納するために、 現行サーバーに補助表を作成します。

呼びかけ CREATE AUXILIARY TABLE

このステートメント実行時に、特殊レジスター CURRENT RULES の値が「DB2」であり、かつ、その表スペースが暗黙的に作成されている場合には、このステートメントをアプリケーション・プログラムに組み込むことも、対話式に出すこともできます。 これは、DYNAMICRULES の実行動作が暗黙的または明示的に指定されている場合のみ、動的に準備できる実行可能ステートメントです。

変更の開始 Db2 が補助テーブルを暗黙的に作成する場合は、このステートメントを使用しないでください。 詳細は、「LOBテーブルスペースの暗黙的な作成 」を参照してください。変更の終わり

承認 CREATE AUXILIARY TABLE

以下に定義する特権セットには、少なくとも次のいずれかが含まれていなければいけません。

  • IN 文節により暗黙的または明示的に指定したデータベースに対する CREATETAB 特権
  • データベースに対する DBADM、DBCTRL、または DBMAINT 権限
  • SYSADM または SYSCTRL 権限
  • システム DBADM
  • インストール SYSOPR 権限 (プロセスの現行 SQLID が SYSINSTL に設定されている場合)

特権セット:

アプリケーション・プログラムにこの ステートメントを組み込む場合、特権セットは、プランまたはパッケージの所有者が持つ特権となります。 アプリケーションが、ROLE AS OBJECT OWNER 文節を指定してトラステッド・コンテキスト内にバインドされている場合、ロールが所有者となります。 それ以外の場合は、許可 ID が所有者となります。 指定した表名に含まれる修飾子がこの許可 ID と異なる場合には、 特権セットに、SYSADM 権限、SYSCTRL 権限、データベースに対する DBADM 権限、あるいはデータベースに対する DBCTRL 権限が 含まれていなければなりません。

ROLE AS OBJECT OWNER が有効な場合、ロールがスキーマに対する CREATEIN 特権、SYSADM 権限、または SYSCTRL 権限を持っていない限り、スキーマ修飾子はロールと同じである必要があります。

ROLE AS OBJECT OWNER が有効でない場合、以下のいずれかの規則が適用されます。

  • 権限セットにスキーマに対するCREATEIN権限、SYSADM権限、またはSYSCTRL権限のいずれかが欠けている場合、スキーマ修飾子(暗黙的または明示的)はプロセスの権限IDのいずれかと一致していなければなりません。
  • SYSADM 権限または SYSCTRL 権限が特権セットに含まれている場合、スキーマ修飾子はどの有効スキーマ名でも構いません。

ステートメントが動的に準備された場合、権限セットはプロセスのSQL認証IDが保持する権限です 信頼されたコンテキスト内で処理が行われ、ROLE AS OBJECT OWNER句が指定されている場合を除きます。 その場合には、特権セットは、プロセスの 1 次許可 ID と関連するロールが持つ特権のセットとなります。 このプロセスがトラステッド・コンテキスト内にある場合、どの許可 ID もこの修飾子にすることができます。 ただし、そのプロセスがトラステッド・コンテキスト内にない場合で、かつ、プロセスのこの SQL 許可 ID と異なる修飾子が、指定した表名に含まれている場合には、以下の規則が適用されます。

  • SYSADM 権限または SYSCTRL 権限 (あるいはデータベースに対する DBADM 権限、または表を作成するときのデータベースに対する DBCTRL 権限) が特権セットに含まれている場合、スキーマ修飾子は有効なスキーマ名であればどれでも構いません。
  • 特権セットにSYSADMまたはSYSCTRL権限(またはデータベースに対するDBADM権限、テーブル作成時のデータベースに対するDBCTRL権限)が欠けている場合、スキーマ修飾子は、その権限IDが保持する特権セットがテーブル作成に必要なすべての権限を含んでいる場合にのみ有効です。

構文 CREATE AUXILIARY TABLE

構文図を読むビジュアルシンタックスダイアグラムをスキップするCREATE AUXILIARYAUX TABLEaux-table-nameIN database-name. table-space-nameSTOREStable-nameAPPEND NOAPPEND YESCOLUMNカラム名PART整数

説明の対象: CREATE AUXILIARY TABLE

AUXILIARY または AUX
LOB 列 (または LOB データ・タイプに基づいている特殊タイプを 持つ列) の LOB データを格納するために使用する表を指定します。
補助テーブル名
補助表の名前を指定します。 名前 (暗黙修飾子または明示修飾子を含む) は、 現行サーバーに存在する表、ビュー、別名、またはシノニムを示すものや、SYSIBM.SYSPENDINGOBJECTS カタログ表に存在する表を示すものであってはなりません。
IN database-name.table-space-name または IN table-space-name
補助表が作成される表スペースを指定します。 この名前は、現行サーバーに 現在存在する空の LOB 表スペースを示すものでなければなりません。 LOB 表スペースは、関連した基本表と同じデータベースにあることが必要です。

データベースと表スペースを指定する場合は、指定したデータベースに表スペースが 属していなければなりません。 表スペースのみを指定する場合には、その表スペースは、指定された表スペースを含む データベースに属している必要があります。 表スペースのみを指定する場合には、この表スペースは DSNDB04 に属している必要があります。 このタイプの表スペースが作成されるのは、SET CURRENT RULES='DB2' が指定されている場合に限定されます。

STORES テーブル名 COLUMN カラム名
基本表、および補助表に格納する基本表の列を示します。 基本表がパーティション化されていない場合、補助表が、 指定した列に関して既に存在していてはなりません。 基本表がパーティション化されている場合、補助表が、指定した列および 指定したパーティションに関して既に存在していてはなりません。

補助表に格納される LOB データのコード化スキームは、基本表のコード化スキーム と同じです。 これは、基本表の作成時の CCSID 文節の値によって、ASCII、EBCDIC、UNICODE のいずれかです。

APPEND NO または APPEND YES
表に対する追加処理を使用するかどうかを指定します。 APPEND 文節は、作業ファイル表スペースにある表に対して指定してはなりません。

基本表が範囲内パーティション表スペースにある場合、LOB 表の APPEND オプションは、パーティションごとに異なる場合があります (各パーティションの LOB 表スペースおよび関連オブジェクトが明示的または暗黙的に作成されているかどうかによって異なります)。 増加対応パーティション表スペースにある基本表の場合は、LOB 表の APPEND 属性が、各パーティションによって継承されます。

APPEND NO
表に対する追加処理を使用しないことを指定します。 挿入および LOAD 操作の場合、 Db2 は、行のクラスターキー列の値を考慮して、データ行を適切にクラスター化された方法で配置しようと試みます。

APPEND NO がデフォルトです。

APPEND YES
挿入操作および LOAD 操作時にクラスター化に関係なく表にデータ行を配置することを指定します。
PART 整数
補助表に格納するために指定した列の、基本表のパーティションを指定します。 PART を指定できるのは、 基本表がパーティション化表スペースに定義されていて、基本表の同じ LOB 列に関して他の補助表が存在していない 場合だけです。

CREATE AUXILIARY TABLE に関する注意事項

所有者特権
補助表に対する特定の特権はありません。 オブジェクトの所有権の詳細については、 Authorization, privileges, permissions, masks, and object ownershipを参照してください。
作成する補助テーブルの数を決定する

パーティショニングされたテーブルでは、ベーステーブルの各パーティションに、LOBカラムごとにLOBテーブルスペース、補助テーブル、補助インデックスがそれぞれ必要になります。

ログ収集対象のLOBテーブルスペース内の補助テーブル
LOGGED である LOB 表スペース内に補助表を作成し、関連する基本表スペースが NOT LOGGED である場合、LOB 表スペースのロギング属性は暗黙的に NOT LOGGED に変更され、基本表スペースと LOB 表スペースのロギング属性はリンクされます。
テーブルの未使用領域と付加処理
LOB データを更新または削除すると、次の挿入で使用できるフリー・スペースが LOB 表に作成されます。 追加処理を使用する表の場合は、表スペースの終わりにある以外のフリー・スペースは、いずれも挿入操作の際に再利用されません。 表内のすべての未使用フリー・スペースは、SHRELEVL REFERENCE キーワードか SHRLEVEL CHANGE キーワードのいずれかを指定した REORG ユーティリティーを実行することにより再利用できます。 REORG ユーティリティーは APPEND オプションの影響を受けません。

CREATE AUXILIARY TABLE

各従業員の写真用に、データ型が BLOB( 110K ) の EMP_PHOTO というカラムがサンプル従業員テーブル DSN8D10.EMP に追加されたと仮定します。 LOBテーブルスペース DSN8D13A.PHOTOLTS のBLOBカラムのBLOBデータを保存するための補助テーブルEMP_PHOTO_ATABを作成します。
   CREATE AUX TABLE EMP_PHOTO_ATAB
      IN DSN8D13A.PHOTOLTS
      STORES DSN8D10.EMP
      COLUMN EMP_PHOTO;
1 例外:CREATE TABLES権限は、プロセスのSQL認証IDでチェックされます。