SQL 解説書

CREATE ALIAS

CREATE ALIAS ステートメントは、表、視点、ニックネーム、または他の別名に対する別名を定義します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むか、 または動的 SQL ステートメントを使用して発行することができます。 このステートメントは、動的に準備可能な実行可能ステートメントです。 しかし、バインド・オプション DYNAMICRULES BIND を適用する場合、 ステートメントを動的に準備することはできません (SQLSTATE 42509)。

許可

このステートメントの許可 ID には、以下の特権が少なくとも 1 つ含まれている必要があります。

別名によって参照されるオブジェクトを使用するには、そのオブジェクトに対して、 オブジェクトそのものを使用する場合に必要な特権と同じ特権が必要です。

構文

>>-CREATE----+-ALIAS--------+--alias-name---FOR----------------->
             |         (1)  |
             '-SYNONYM------'
 
>-----+-table-name--+------------------------------------------><
      +-view-name---+
      +-nickname----+
      '-alias-name2-'
 

注:

  1. 他の SQL 処理系に存在する既存の CREATE SYNONYM ステートメントの構文を許容するために、 CREATE ALIAS の代わりに CREATE SYNONYM が受け入れられます。

説明

alias-name
別名を指定します。 この名前が、現行データベースに存在する表、視点、ニックネーム、 または別名を指定していてはなりません。

2 つの部分からなる名前を指定する場合、 "SYS" で始まるスキーマ名は使用できません (SQLSTATE 42939)。

別名を定義する際の規則は、表名の定義に使用される規則と同じです。

FOR table-name、view-name、nickname、 または alias-name2
alias-name を定義する対象の表名 (table-name)、 視点名 (view-name)、ニックネーム (nickname)、 または別名 (alias-name) を指定します。 他の別名 (alias-name2) を指定する場合、その別名は、 定義される新しい alias-name (完全修飾形式の) と同じであってはなりません。 table-name を宣言された一時表 (SQLSTATE 42995) にすることはできません。

例 1: HEDGES は表 T1 に対して別名を作成します (どちらも修飾なし)。

  CREATE ALIAS A1 FOR T1

HEDGES.T1 に対して別名 HEDGES.A1 が作成されます。

例 2: HEDGES は表に対して別名を作成します (どちらも修飾付き)。

  CREATE ALIAS HEDGES.A1 FOR MCKNIGHT.T1

HEDGES.T1 に対して別名 MCKNIGHT.A1 が作成されます。

例 3: HEDGES は表に対して別名を作成します (異なるスキーマ内の別名。 HEDGES は DBADM ではなく、HEDGES はスキーマ MCKNIGHT に対して CREATEIN を持っていない)。

  CREATE ALIAS MCKNIGHT.A1 FOR MCKNIGHT.T1

この例はエラーになります (SQLSTATE 42501)。

例 4: HEDGES は未定義の表に対して別名を作成します (どちらも修飾付き。 FUZZY.WUZZY は存在しない)。

  CREATE ALIAS HEDGES.A1 FOR FUZZY.WUZZY

このステートメントは成功しますが、警告 (SQLSTATE 01522) が出されます。

例 5: HEDGES は別名に対して別名を作成します (どちらも修飾付き)。

    CREATE ALIAS HEDGES.A1 FOR MCKNIGHT.T1
  CREATE ALIAS HEDGES.A2 FOR HEDGES.A1

最初のステートメントは成功します (例 2 と同じ)。

2 番目のステートメントも成功して、別名連鎖が作成されます。 つまり、HEDGES.A2 が HEDGES.A1 を参照し、 その HEDGES.A1 が MCKNIGHT.T1 を参照することになります。 HEDGES に MCKNIGHT.T1 に対する特権があるかどうかは関係ありません。 別名は、表の特権に関係なく作成されます。

例 6: ニックネーム FUZZYBEAR の別名として、A1 を指定します。

   CREATE ALIAS A1 FOR FUZZYBEAR

例 7: ある大規模な組織に、 D108 という会計部門と D577 という人事部門があります。 D108 は、DB2 RDBMS に存在する表に、ある情報を保持しています。 D577 は、Oracle RDBMS に存在する表に、いくつかのレコードを保持しています。 DBA は、この 2 つの RDBMS を連合システム内のデータ・ソースとして定義し、 それぞれの表に DEPTD108 および DEPTD577 というニックネームを付けます。 連合システムのユーザーはこれらの表の結合を作成する必要がありますが、 英数字のニックネームではなく、もっと意味のある名前で参照できるようにしたいことがあります。 それで、DEPTD108 の別名として FINANCE を定義し、 DEPTD577 の別名として PERSONNEL を定義します。

   CREATE ALIAS FINANCE FOR DEPTD108
   CREATE ALIAS PERSONNEL FOR DEPTD577  


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]