外部ルーチンとオペレーティング システム プラットフォームのユーザーを、その外部ルーチンが含まれているデータベースに関連付けるキーワード。
DEFINERを指定する場合、database_nameまたはuser_nameは外部ルーチンの含まれているデータベースであることが必要です。
DEFINERまたはINVOKERのいずれかを指定できます。ただし両方を指定することはできません。
- DEFAULT
- 以下の文のEXTERNAL SECURITY DEFINER句で許可名が指定されないすべての外部ルーチンに関し、その外部ルーチンとこの許可とを関連付ける、DEFINERキーワードの任意指定のキーワード修飾子を指定します。
例: DEFINER許可の作成
次の例では、名前がsales_processing、ユーザー名がsalesmng、およびユーザー パスワードがmysecretのDEFINER許可オブジェクトを作成します。
CREATE AUTHORIZATION sales_processing AS DEFINER USER 'salesmng' PASSWORD 'mysecret';
EXTERNAL SECURITY DEFINER句の含まれている外部ルーチンが同じOSユーザー許可の下で実行された場合、どのユーザーがこれを実行しているかにかかわらず、Teradata DatabaseはこのOSプラットフォーム ユーザーのコンテキストを使って、そのような外部ルーチンすべてを実行します。
例: 外部セキュリティ句のDEFINER許可の作成
次の例は、外部セキュリティ句EXTERNAL SECURITY DEFINER salesが含まれているすべての外部ルーチンを持つ、特定のDEFINER許可名salesを作成します。許可オブジェクト名salesは、外部セキュリティ句に指定されるテキストの一部です。この仕様により、システムはデータ ディクショナリ内の許可オブジェクトSYSLIB.salesを評価し、評価が済んだら、指定のユーザー コンテキストを使用して外部ルーチンを実行します。
CREATE AUTHORIZATION SYSLIB.sales AS DEFINER USER 'SalesDept' PASSWORD 'ikcerednep';
例: デフォルトのDEFINER許可の作成
次の例では、accountingという名前のDEFINER許可をSYSLIBデータベースの中に作成します。クライアント ユーザー名はaccdept、ユーザー パスワードはnesuahkcotskです。
CREATE AUTHORIZATION SYSLIB.accounting AS DEFINER DEFAULT USER 'accdept' PASSWORD 'nesuahkcotsk';
この例では、SYSLIBデータベースのDEFAULT許可としてaccountingを、指定されたクライアント ユーザー名accdeptに関連付けます。
accdeptはDEFAULT許可オブジェクトであるため、システムはこれを、EXTERNAL SECURITY DEFINER句の含まれているすべての外部ルーチンに関連付けます。データベースSYSLIB内のEXTERNAL SECURITY DEFINER句を含む外部ルーチンはすべて、このリクエストによって定義されるユーザー コンテキストを使って実行されます。
1つのデータベースにつきデフォルトのDEFINERオブジェクトは1つのみという制約があることにご注意ください。それ以外のものについては、特定の名前が必要です。DEFAULTがすでに存在する場合、システムは要求元にエラーを返します。