Db2 スキーマとスキーマ修飾子
リレーショナル・データベース内にあるオブジェクトは、スキーマと呼ばれる集合に編成されます。 スキーマとは、データベース内のオブジェクトを論理的に分類するための、名前付きオブジェクトの集合体である。 オブジェクトのスキーマ名は、そのオブジェクトが属するスキーマを決定する。
オブジェクトは作成時にスキーマに割り当てられる。 つまり、ある種のデータベース・オブジェクトが作成されるとき、それらには修飾された2つの部分からなる名前が付けられる。 最初の部分はスキーマ名 (または修飾子) で、これは明示または暗黙のいずれかで指定されます。 2 番目の部分は、オブジェクトの名前です。 デフォルト・スキーマは、プランまたはパッケージ所有者の許可 ID です。 スキーマに含むことのできるオブジェクトには、表、索引、表スペース、特殊タイプ、関数、ストアード・プロシージャー、およびトリガーがあります。
異なる型、ファンクション、プロシージャ、シーケンス、またはトリガーなどのユーザー・オブジェクトは、 システム・スキーマ ( Db2 サブシステムが使用するために予約されているスキーマのセットのいずれか)で作成されるべきではありません。 詳細については、 Db2 for z/OS の予約済みスキーマ名を参照のこと。
CURRENT SCHEMAとCURRENT SQLIDがオブジェクト・スキーマに与える影響
Db2 for z/OS® の以前のバージョンでは、CURRENT SCHEMA の値が CURRENT SQLID の値と異なる場合、CREATE ステートメントには特定の制限がありました。 これらの制限はもはや存在しませんが、CURRENT SCHEMAとCURRENT SQLIDに異なる値が含まれている場合、修飾子と所有者を決定する方法を考慮する必要があります。 所有者を決定する規則は、作成されるオブジェクトのタイプによって異なります。
CURRENT SCHEMA および CURRENT SQLID は、動的 SQL ステートメントにのみ影響します。 静的 CREATE ステートメントは、CURRENT SCHEMA または CURRENT SQLID のいずれによっても影響されません。
以下の表に、次のオブジェクトのスキーマ修飾子と所有者を決定する際の CURRENT SCHEMA の影響を要約します。
- 別名
- 補助表
- 作成済みグローバル一時表
- 索引
- 表
- ビュー
| 作成される新規オブジェクトの名前の仕様 | 新規オブジェクトのスキーマ修飾子 | 新規オブジェクトの所有者 |
|---|---|---|
| name (修飾子なし) | CURRENT SCHEMA の値 | CURRENT SQLID の値 |
| abc.name (単一修飾子) | abc | abc |
| ......abc.name (複数の修飾子) | abc | abc |
以下の表に、次のオブジェクトのスキーマ修飾子と所有者を決定する際の CURRENT SCHEMA の影響を要約します。
ユーザー定義タイプ
- ユーザー定義関数
- プロシージャー
- シーケンス
- トリガー
| 作成される新規オブジェクトの名前の仕様 | 新規オブジェクトのスキーマ修飾子 | 新規オブジェクトの所有者 |
|---|---|---|
| name (修飾子なし) | CURRENT SCHEMA の値 | CURRENT SQLID の値 |
| abc.name (単一修飾子) | abc | CURRENT SQLID の値 |
| ......abc.name (複数の修飾子) | abc | CURRENT SQLID の値 |