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の構文
table-alias
- 1 alias-name2 が指定されている場合、 エイリアス名の完全修飾形式に解決されてはならず、 alias-name2 は現在のサーバーに存在するエイリアスであってはなりません
説明の対象: 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-name、view-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 という名前のパブリック別名を作成します。
別名を SYSPUBLIC.SEQS として参照することができます。あるいは、SEQS という名前のプライベート・シーケンスまたは別名が存在しない場合は、単に SEQS として参照できます。CREATE PUBLIC ALIAS SEQS FOR SEQUENCE JOE.JOESSEQ;
