最初は、ユーザーDBCだけがSYSUDTLIBに対するUDT権限を持っており、ユーザーDBCはその権限を暗黙的に保持しています。それ以外のすべてのユーザーまたはロールがUDTに関係するSQL文を実行するには、SYSUDTLIBに対するUDT権限をそれらのユーザーやロールに明示的に付与する必要があります。
UDTに関連する権限には、3つの種類があります。
- UDTMETHOD(UDTMETHOD権限を参照)。
UDTMETHOD権限を持つユーザーは、どのUDTおよびそのメソッドに対しても無制限に使用、削除、または変更することができます。
データベース レベルで、特にSYSUDTLIBデータベースにこの権限のみ付与できます。UDTMETHODにはUDTオブジェクト レベルの権限がありません。
- UDTTYPE(UDTTYPE権限を参照)。
UDTTYPE権限を持つユーザーは、UDTUSAGEが許可する権限に加えて、UDTの作成、更新、および削除を行なうことができます。
データベース レベルで、この権限のみ付与できます。UDTTYPEにはUDTオブジェクト レベルの権限がありません。
- UDTUSAGE(UDTUSAGE権限を参照)。UDTUSAGE権限を持つユーザーは、既存のUDTとその既存メソッドを参照するすべてのSQL文を実行することができます。つまり、特定のUDTに対してUDTUSAGE権限を持つユーザーは、以下の操作を実行できます。
- 特定のUDT型を含む列を持つよう定義された新しいテーブルを作成する。
- 特定のUDT型を含む列を持つよう定義された既存のテーブルを更新する。
- 問合わせ、UDF、またはプロシージャ内で特定のUDTを参照する。
- 特定のUDT型にのみ関連付けられているすべてのメソッドを実行する。
その他のUDTに関連するメソッドを実行するには、それらのUDTに対するUDTUSAGE権限も必要となります。
UDTUSAGEは、ユーザーに対して以下の処理のいずれも実行することを許可しません。- 新しいUDTを作成する。
- 既存のUDTを削除する。
- 既存のUDTの順序付け、キャスト、または変換の動作を変更する。
- 新しいメソッドを作成する。
- 既存のメソッドを削除または置換する。
UDTMETHODおよびUDTTYPEとは異なり、UDTUSAGEは特定のUDT(TYPE UDT_nameとして)またはSYSUDTLIBデータベース全体に対して付与することができます。