CREATE ALIAS

CREATE ALIAS ステートメントは、現行またはリモート・サーバーにあるデータベース・ファイルの表、表のパーティション、ビュー、またはメンバーの別名を定義します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むことができ、また対話式に呼び出すこともできます。 これは、動的に準備できる実行可能ステートメントです。

権限

このステートメントの権限 ID が保持する特権には、少なくとも以下の 1 つ が含まれていなければなりません。

このステートメントの権限 ID が保持する特権には、少なくとも以下の 1 つ が含まれていなければなりません。

  • 次のシステム権限
    • DDM ファイル作成 (CRTDDMF) コマンドに対する *USE
  • データベース管理者権限

SQL 名が指定され、別名が作成されるライブラリーと同じ名前のユーザー・プロファイルが存在し、しかも、その名前がステートメントの権限 ID と異なっている場合、ステートメントの権限 ID が保持している特権には、少なくとも次のいずれか 1 つを含める必要があります。

  • その名前を持つユーザー・プロファイルに対する *ADD システム権限
  • データベース管理者権限

既存の別名に置き換えるには、ステートメントの権限 ID が保持する特権に、次のうち少なくともいずれか 1 つを含める必要があります。

  • 次のシステム権限
    • 別名に対する *OBJMGT システム権限
    • この別名を削除するために必要な全権限
  • データベース管理者権限

構文

構文図を読む構文図をスキップする
>>-CREATE--+------------+--ALIAS--alias-name-------------------->
           '-OR REPLACE-'                      

>--FOR--+-table-name-+--+--------------------------+-----------><
        '-view-name--'  '-(--+-partition-name-+--)-'   
                             '-member-name----'        

説明

OR REPLACE
現行サーバーにこの別名の定義が存在する場合に、その定義を置き換える、という動作を指定します。実際には、カタログで既存の定義を削除してから新しい定義に置き換える、という動作になりますが、例外として、この別名に対して与えられていた特権は影響を受けません。現行サーバーにこの別名の定義が存在しなければ、このオプションは無視されます。
alias-name
別名を指定します。暗黙的または明示的修飾子も含め、この名前は、現行サーバーに既に存在している索引、表、ビュー、別名、またはファイルと同じ名前にすることはできません。

別名 を修飾する場合は、2 部構成または 3 部構成の名前にすることができます。スキーマ名として、システム・スキーマは使用しないでください。3 部構成の名前の名前を使用する場合は、最初の部分でリレーショナル・データベース・ディレクトリーにあるリレーショナル・データベース名を指定する必要があります。

リモート・リレーショナル・データベースへの接続およびローカル・ディレクトリーについて詳しくは、「SQL プログラミング」および「分散データベース・プログラミング」を参照してください。

SQL 名が指定されている場合、別名は、暗黙的または明示的修飾子で指定し ているスキーマ内に作成されます。

システム名が指定されている場合、別名は、修飾子で指定しているスキーマ 内に作成されます。修飾されていない場合、別名は、 その別名の作成の対象である表かビューと同じスキーマ内に作成されます。 表が修飾されず、しかも別名の作成時に存在していなかった場合:

  • CURRENT SCHEMA 特殊レジスターの値が *LIBL である場合、別名は、現行ライブラリー (*CURLIB) 内に作成されます。
  • そうでない場合、別名は現行スキーマ内に作成されます。

別名が有効なシステム名でない場合、DB2® for i は、システム名を生成します。 名前の生成に関する規則については、表名の生成の規則を参照してください。

FOR 表名またはビュー名
別名の定義の対象である現行またはリモート・サーバーの表やビューを識別します。別名を指定することはできません (別名で別の別名を参照することはできません)。ただし、リモート・サーバーにある別名を参照する名前であれば、指定できます。

非ローカルのリレーショナル・データベース名を使用して 3 部構成の名前を指定する場合は、alias-nametable-name または view-name と同じ名前にする必要があります。

表名ビュー名 では、別名の作成時に存在していた表やビューを識別する必要はありません。 表やビューが別名の作成時に存在していない場合は、警告が戻されます。 別名の使用時に表やビューが存在していない場合は、エラーが戻されます。

SQL 名が指定されており、表名 またはビュー名 が修飾されていない場合の修飾子は、暗黙の修飾子です。詳しくは、命名規則を参照してください。

システム名が指定されており、表名ビュー名 が修飾されておらず、しかも別名の作成時に存在していない場合、表名ビュー名 は、別名が作成されるライブラリーによって修飾されます。

partition-name
パーティション化された表のパーティションを識別します。

パーティションを指定した場合、別名を SQL スキーマ・ステートメント内で使用することはできません。 パーティションを指定しなかった場合、表内のすべてのパーティションが別名に組み込まれます。

パーティション名が指定される場合、 3 部構成の名前を FOR 節に指定してはなりません。3 部構成の名前が指定され、 別名のリレーショナル・データベースと異なるリレーショナル・データベースを示している場合、 別名を使用しようとすると失敗します。

メンバー名
データベース・ファイルのメンバーを識別します。 メンバー名が指定されず、表がパーティション化された表ではない 場合、*FIRST が使用されます。メンバー名が指定されず、表がパーティション化された表である 場合、すべてのメンバー (パーティション) が使用されます。

メンバーを指定した場合、ほとんどの SQL スキーマ・ステートメント内では別名を使用することはできません。 これは、CREATE PROCEDURE 内、CREATE FUNCTION 内、および as-result-table 節を指定する CREATE TABLE 内で使用できます。

メンバー名 が指定される場合、3 部構成の名前を FOR 節に指定してはなりません。3 部構成の名前が指定され、 別名のリレーショナル・データベースと異なるリレーショナル・データベースを示している場合、 別名を使用しようとすると失敗します。

別名参照: システム名または SQL 名を 参照するように別名を定義することができます。システム名は作成処理中に生成されるため、 一般的には SQL 名を指定することが推奨されます。

ただし、 別名が 3 部構成の名前への参照を指定していて、別名がネイティブ・コマンドまたは ネイティブ・アクセスで DDM ファイルとして使用される予定の場合、指定される 名前はシステム名でなければなりません。

データベース・ファイル・オーバーライド (OVRDBF) CL コマンドも使用すれば、データベース・マネージャーは、データベース・ファイルの個々のメンバーを処理することができるようになります。 しかし、表のパーティションまたはデータベース・ファイルのメンバーに対する別名を作成する方 が、オーバーライドを実行する必要がなくなるため、簡単でしかも パフォーマンスも向上します。

別名の属性 : 別名は特殊形式の DDM ファイルとして 作成されます。 SQL では、別名と通常の DDM ファイルの両方を使用できますが、その別名または DDM ファイルで非ローカルのリレーショナル・データベース名を指定する場合は、table-name または view-name で別名と同じ名前を指定する必要があります。

分散表を介して作成される別名は、現行サーバー上でのみ作成されます。 分散表についての詳細は、DB2 マルチシステム (Multisystem) を参照してください。

別名の所有権: SQL 名が指定されている場合、

  • 作成した別名が入れられるスキーマと同じ名前のユーザー・プロファイルが存在する場合、別名の所有者 はそのユーザー・プロファイルです。
  • その他の場合は、別名の所有者 は、この ステートメントを実行しているスレッドのユーザー・プロファイルまたは グループ・ユーザー・プロファイルです。

システム名を指定した場合は、別名の所有者 は、この ステートメントを実行しているスレッドのユーザー・プロファイルまたはグループ・ユーザー・プロファイルです。

別名の権限 : SQL 名を使用する場合は、別名 は、*PUBLIC に対するシステム権限 *EXCLUDE を使用して作成されます。 システム名を使用する場合、別名は、スキーマ の作成権限 (CRTAUT) パラメーターによって決められる *PUBLIC に対する権限を使用して作成されます。

別名の所有者がグループ・プロファイルのメンバー (GRPPRF キーワード) であり、グループ権限が指定されている (GRPAUT キーワード) 場合は、そのグループ・プロファイルにも、その別名に対する権限が与えられます。

REPLACE の規則: REPLACE によって別名を再作成する場合は、以下のようになります。
  • 既存のコメントまたはラベルは破棄されます。
  • 権限を持つユーザーは維持されます。オブジェクト所有者は変更される可能性があります。
  • 現在のジャーナル監査は保持されます。

パッケージと 3 部構成の別名: アプリケーションがリモート・オブジェクトと DRDA® アクセスのために 3 部構成の名前を別名として使用する場合は、そのアプリケーション・プログラムのパッケージが、その 3 部構成の名前で指定されているそれぞれの場所に存在していなければなりません。パッケージを明示的に作成するには、CRTSQLPKG CL コマンドを使用します。3 部構成の名前を別名として参照するときに、パッケージが存在していなければ、データベース・マネージャーが暗黙的にパッケージを作成しようとします。

代替構文: 以下のキーワードは、旧リリースとの互換性を維持するためにサポートされている同義語です。 これらのキーワードは標準キーワードではないので、原則として使用しないようにしてください。

  • キーワード SYNONYM は、ALIAS の同義語として使用することができます。

例 1: PROJECT 表に対して、CURRENT_PROJECTS という別名を作成します。

CREATE ALIAS CURRENT_PROJECTS
  FOR PROJECT

例 2: SALES 表の JANUARY パーティションに対して、SALES_JANUARY という別名を作成します。 SALES 表には、12 のパーティション (1 年のそれぞれの月ごとに 1 つずつ) があります。

CREATE ALIAS SALES_JANUARY
  FOR SALES(JANUARY)

例 3: リレーショナル・データベース USARDB にあるスキーマ REPORTS の SALES 表の別名として、REPORTS.SALES という別名を作成します。

CREATE ALIAS REPORTS.SALES
  FOR USARDB.REPORTS.SALES