CREATE ALIAS ステートメント

CREATE ALIAS ステートメントは、表、ビュー、またはシーケンスの別名を定義します。 定義は、現行サーバーの Db2 カタログに記録されます。

呼びかけ CREATE ALIAS

このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 これは、DYNAMICRULES RUN動作が有効になっている場合にのみ、動的に準備できる実行可能なステートメントです。 詳細は、「Authorization IDs and dynamic SQL」 を参照してください。

承認 CREATE ALIAS

別名を作成するには、特権セットに、以下にリストされている権限または特権のうち、少なくとも 1 つが含まれている必要があります。

表またはビューの別名を作成する場合:

  • 表またはビューの場合:
    • CREATEALIAS 特権
    • SYSADM または SYSCTRL 権限
    • システム DBADM 権限
    • 変更の開始インストール SYSOPR 権限 (プロセスの現行 SQLID が SYSINSTL に設定されている場合)変更の終わり
  • 変更の開始表の場合のみ:
    • インストール・パネル DSNTIPP のフィールド DBADM CREATE AUTH の値が YES の場合、表を含むデータベースに対する DBADM 権限または DBCTRL 権限
    変更の終わり

シーケンスの別名を作成する場合:

  • スキーマに対する CREATEIN 特権
  • SYSADM または SYSCTRL 権限
  • システム DBADM 権限
  • 変更の開始インストール SYSOPR 権限 (プロセスの現行 SQLID が SYSINSTL に設定されている場合)変更の終わり

データベースを暗黙的に作成する場合、データベース特権が暗黙的 データベースまたは DSNDB04 上になければなりません。

特権セット:

アプリケーション・プログラムにこの ステートメントを組み込む場合、特権セットは、プランまたはパッケージの所有者が持つ特権となります。 このプランとパッケージの所有者がロールの場合、このロールは特権セットに対してこの特権を保持する必要があります。 指定した別名に含まれる修飾子が この許可 ID と異なる場合には、特権セットに、次のいずれかの権限が含まれていなければ なりません。

  • SYSADM または SYSCTRL 権限
  • 変更の開始システム DBADM 権限変更の終わり
  • 別名が表のものであり、インストール・パネル DSNTIPP のフィールド DBADM CREATE AUTH の値が YES であれば、表を含むデータベースに対する DBADM 権限または DBCTRL 権限

変更の開始ROLE AS OBJECT OWNER が有効な場合、ロールがスキーマに対する CREATEIN 特権、SYSADM 権限、SYSCTRL 権限、またはシステム DBADM 権限を持っていない限り、スキーマ修飾子はロールと同じでなければなりません。変更の終わり

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

  • 変更の開始特権セットにスキーマに対する CREATEIN 特権、SYSADM 権限、SYSCTRL 権限、またはシステム DBADM 権限がない場合、スキーマ修飾子 (暗黙的または明示的) は、プロセスの許可 ID の 1 つと同じでなければなりません。変更の終わり
  • 変更の開始特権セットに SYSADM 権限、SYSCTRL 権限、またはシステム DBADM 権限が含まれている場合、スキーマ修飾子は任意の有効なスキーマ名にすることができます。変更の終わり

ステートメントが動的に準備されたものである場合、権限セットは、 プロセスが信頼済みコンテキスト内にある場合、および ROLE AS OBJECT OWNER 節が指定されている場合を除き、プロセスの SQL 認証 ID が保持する権限となります このプロセスが、ROLE AS OBJECT OWNER 文節指定で定義されたトラステッド・コンテキストで実行中でない場合で、かつ、指定した別名に含まれる修飾子がこの許可 ID と異なる場合には、以下の規則が適用されます。

  • 変更の開始特権セットには、SYSADM、SYSCTRL、またはシステム DBADM 権限が含まれている必要があります。変更の終わり
  • 別名が表のものであり、インストール・パネル DSNTIPP のフィールド DBADM CREATE AUTH の値が YES であれば、表を含むデータベースに対する DBADM 権限または DBCTRL 権限が特権セットに含まれている必要があります。
  • 修飾子がプロセスの許可 ID の 1 つと同じであり、その許可 ID が持つ特権に CREATEALIAS 特権が含まれていなければなりません。 これは、特権セットはプロセスの SQL 許可 ID が持つ特権である という規則の例外です。

CREATE ALIASの構文

構文図を読むビジュアルシンタックスダイアグラムをスキップするCREATEPUBLICALIAS table-aliassequence-alias

table-alias

構文図を読むビジュアルシンタックスダイアグラムをスキップするalias-nameFORTABLE table-nameview-namealias-name21
注:
  • 1 alias-name2 が指定されている場合、 エイリアス名の完全修飾形式に解決されてはならず、 alias-name2 は現在のサーバーに存在するエイリアスであってはなりません

sequence-alias

構文図を読むビジュアルシンタックスダイアグラムをスキップするalias-nameFORSEQUENCEsequence-name

説明の対象: CREATE ALIAS

PUBLIC
別名がシステム・スキーマ SYSPUBLIC 中のオブジェクトであることを指定します。 変更の開始PUBLICはシーケンスに対してのみ指定できる。変更の終わり

パブリック別名を作成するには、PUBLIC キーワードが使用されます。 キーワード PUBLIC が指定されていない場合に作成される別名はプライベート別名です。

alias-name
別名を指定します。

表の別名の場合、暗黙修飾子や明示修飾子を含む名前は、現行サーバーに存在する表、ビュー、または表の別名、あるいは SYSIBM.SYSPENDINGOBJECTS カタログ表に存在する表を示すものであってはなりません。

シーケンスの別名の場合、暗黙修飾子や明示修飾子を含む名前は、現行サーバーに存在するシーケンスやシーケンス別名を示すものであってはなりません。

2 部構成の名前を指定する場合は、スキーマ名の先頭を「SYS」にすることはできません。ただし、PUBLIC を指定する場合は、スキーマ名を SYSPUBLIC にする必要があります。 非修飾名は既存のシノニムと同じであってはなりません。

この名前を修飾する場合は、2 部構成または 3 部構成の名前にすることができます。 3つの部分からなる名前を使用する場合は、最初の部分は、現在のサーバーのインストールパネルDSNTIPRにあるフィールド Db2 LOCATION NAMEの値と一致する必要があります。 (現行サーバーがローカルDb2でない場合、この名前は必ずしも CURRENT SERVER 特殊レジスター内の名前ではありません。)

アプリケーションがリモートオブジェクトおよびDRDAアクセスに対して3部構成の名前エイリアスを使用する場合、アプリケーションプログラムは3部構成の名前で指定される各ロケーションでバインドされなければなりません。

FOR TABLE table-nameview-name、または alias-name2
変更の開始alias-nameが定義されているテーブル、ビュー、エイリアスを識別します。 表、ビュー、または別名は、別名の定義時に存在している必要はありません。 別名の作成時に存在しない場合は、警告が返されます。 ただし、参照されるオブジェクトは、別名を含む SQL ステートメントが使用されるときに存在していなければなりません。存在しない場合は、エラーが返されます。 表またはビューが存在する場合、参照されるオブジェクトは現行サーバーまたは別のサーバーに存在する可能性があります。

変更の開始もし alias-name2 を指定する場合は、3つの部分からなる名前でなければならない。 3 部構成の名前の最初の部分は、リモート・サーバーのロケーション名でなければなりません。 別名が存在する場合には、ロケーション名によって識別されるリモート・サーバーに別名が存在していなければなりません。変更の終わり

表が指定される場合、補助表、宣言済み一時表、または XML 列に対して暗黙的に作成される表であってはなりません。

alias-name2 を指定する場合、完全修飾形式の alias-name に解決してはなりません。また、alias-name2 は現行サーバーに存在する別名であってはなりません。

変更の終わり
FOR SEQUENCE シーケンス名
alias-name を定義するシーケンスを指定します。 シーケンス名はDb2 サブシステムによって生成されたシーケンスであってはなりません。これは、ID列またはDOCID列に対して生成されたシーケンスです。 スキーマ名が「SYSADM」の場合を除き、「SYS」で始まるスキーマ名は使用できません。 sequence-name はシーケンスに対する既存の別名であってはなりません。

別名を定義する時点で、シーケンスが存在していなくてもかまいません。 別名の作成時に sequence-name が存在しない場合は、警告が返されます。 ただし、参照されるオブジェクトは、別名を含む SQL ステートメントが使用されるときに存在していなければなりません。存在しない場合は、エラーが返されます。

注釈 CREATE ALIAS

所有者特権:
別名に関して固有の特権は何もありません。 オブジェクトの所有権に関する詳細は、「権限、特権、権限、マスク、およびオブジェクトの所有権 」を参照してください。
PUBLIC 別名:
PUBLIC キーワードが指定されているか、SYSPUBLIC が alias-name のスキーマ修飾子として明示的に指定されている場合は、パブリック別名が作成されます。
非修飾名の解決:
非修飾名が解決されると、パブリック別名の前にプライベート別名が考慮されます。

CREATE ALIAS

例 1
ロケーション名が DB2USCALABOA5281 のDb2でカタログ表の別名を作成します。
   CREATE ALIAS LATABLES FOR DB2USCALABOA5281.SYSIBM.SYSTABLES;
例 2
JOE.JOESSEQ という名前のシーケンスに対して、SEQS という名前のパブリック別名を作成します。
	CREATE PUBLIC ALIAS SEQS FOR SEQUENCE JOE.JOESSEQ;
別名を SYSPUBLIC.SEQS として参照することができます。あるいは、SEQS という名前のプライベート・シーケンスまたは別名が存在しない場合は、単に SEQS として参照できます。