PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

DROP ROLE

DROP ROLE — 删除一个数据库角色

Synopsis

DROP ROLE [ IF EXISTS ] name [, ...]

描述

DROP ROLE 删除指定的角色。要删除超级用户角色,你自己必须是超级用户;要删除非超级用户角色,你必须拥有 CREATEROLE 特权,并且已被授予该角色的 ADMIN OPTION。

如果一个角色仍然被集群中的任何数据库所引用,则它不能被删除;在这种情况下会抛出一个错误。在删除角色之前,你必须删除它拥有的所有对象(或者重新指派这些对象的所有权),并且撤销该角色在其他对象上被授予的任何特权。REASSIGN OWNED 和 DROP OWNED 命令可用于这一目的;更多讨论参见 Section 21.4。

但是,没有必要删除涉及该角色的角色成员关系;DROP ROLE 会自动撤销目标角色在其他角色中的成员关系,以及其他角色在目标角色中的成员关系。其他角色不会被删除,也不会受到其他影响。

参数

IF EXISTS

如果该角色不存在,则不抛出错误,此时会发出一个提示。

name

要删除的角色的名称。

注记

PostgreSQL 包含一个程序 dropuser,它具有与此命令相同的功能(实际上它调用的就是这个命令),但可以从命令外壳运行。

示例

删除一个角色:

DROP ROLE jonathan;

兼容性

SQL 标准定义了 DROP ROLE,但它一次只允许删除一个角色,并且它规定的特权要求与 PostgreSQL 所使用的有所不同。

另请参阅

CREATE ROLE, ALTER ROLE, SET ROLE