Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

DROP ROLE (SQL)

ロールを削除します。

Synopsis

DROP ROLE [IF EXISTS] role-name

引数

引数 説明
IF EXISTS オプション — 存在しないロールに対してコマンドが実行される場合にエラーを抑制します。
role-name 削除するロールの名前。識別子の名前です。 ロール名は、大文字と小文字が区別されません。詳細は、"InterSystems SQL の使用法" の “識別子” の章を参照してください。

概要

DROP ROLE 文は、ロールを削除します。ロールを削除すると、InterSystems IRIS は、そのロール権限が与えられている全ユーザおよびロールでそれを無効にし、データベースから削除します。

$SYSTEM.SQL.Security.RoleExists()Opens in a new tab メソッドを呼び出すことによって、ロールが存在するかどうかを判別できます。存在しない (または既に削除されている) ロールを削除しようとすると、DROP ROLE は SQLCODE -118 エラーを発行します。

特権

DROP ROLE コマンドは特権を必要とする操作です。埋め込み SQL 内で DROP ROLE を使用する前に、以下の要件を 1 つ以上満たす必要があります。

  • ロールの所有者である。

  • 以下のいずれかでログインしている。

    • USE 権限がある %Admin_Secure 管理リソース

    • USE 権限がある %Admin_RoleEdit 管理リソース

    • システムに対する全面的なセキュリティ特権

  • ロール WITH ADMIN OPTION を付与されている。

特権がない場合は、SQLCODE -99 エラー (特権違反) が返されます。

$SYSTEM.Security.Login()Opens in a new tab メソッドを使用して、以下のようにユーザに適切な特権を割り当ててください。

   DO $SYSTEM.Security.Login("_SYSTEM","SYS")
   &sql(      )

$SYSTEM.Security.Login メソッドを呼び出すには、%Service_Login:Use 特権が必要です。詳細は、"インターシステムズ・クラス・リファレンス" の "%SYSTEM.SecurityOpens in a new tab" を参照してください。

以下の埋め込み SQL 例は、BkUser という名前のロールを作成し、後でそれを削除しています。

  DO $SYSTEM.Security.Login("MyName","SecretPassword")
  &sql(CREATE ROLE BkName)
  IF SQLCODE=-99 {
  WRITE !,"You don't have CREATE ROLE privileges" }
  ELSE { WRITE !,"Created a role"}
  /* Use role */
  &sql(DROP ROLE BkName)
  IF SQLCODE=-99 {
  WRITE !,"You don't have DROP ROLE privileges" }
  ELSE { WRITE !,"Dropped the role" }

関連項目

FeedbackOpens in a new tab