DROP ROLE — データベースロールを削除する
DROP ROLE [ IF EXISTS ] name
[, ...]
DROP ROLE
は指定したロール(複数可)を削除します。
スーパーユーザロールを削除するには、自身もスーパーユーザでなければなりません。
スーパーユーザ以外のロールを削除するには、CREATEROLE
権限を持たなければなりません。
データベースクラスタのいずれかから参照されている場合、ロールを削除することができません。 削除しようとしてもエラーとなります。 ロールを削除する前に、そのロールが所有するオブジェクトすべてを削除(またはその所有権を変更)しなければなりません。 また、そのロールが他のオブジェクトについて付与された権限も取り消されなければなりません。 この目的のためにはREASSIGN OWNEDおよびDROP OWNEDコマンドが有用です。 詳しくは20.4. ロールの削除を参照して下さい。
しかし、ロール内のロールメンバ資格を削除する必要はありません。
DROP ROLE
は自動的に他のロール内にある対象ロールのメンバ資格を取り消します。
他のロールは削除されることも何らかの影響を受けることもありません。
IF EXISTS
ロールが存在しない場合でもエラーになりません。 この場合注意メッセージが発行されます。
name
削除対象のロールの名前です。
PostgreSQLには、このコマンドと同じ機能を持つプログラムdropuserがあります。 (実際には、このプログラムはこのコマンドを呼び出しています。) こちらはコマンドシェルから実行することができます。
ロールを削除します。
DROP ROLE jonathan;
標準SQLではDROP ROLE
を定義していますが、一度に1つのロールしか削除することができません。
また、PostgreSQLとは異なる権限が必要であると規定しています。