2024 年 9 月 26 日: PostgreSQL 17 发布!
支持版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不受支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1

DROP ROLE

DROP ROLE — 删除数据库角色

概要

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

描述

DROP ROLE 删除指定的角色。要删除超级用户角色,您必须自己成为超级用户;要删除非超级用户角色,您必须拥有 CREATEROLE 权限,并且已获得该角色的 ADMIN OPTION 权限。

如果角色仍在集群的任何数据库中被引用,则无法删除该角色;如果出现这种情况,将引发错误。在删除角色之前,必须删除它拥有的所有对象(或重新分配其所有权)并撤销角色已获得的任何对其他对象的权限。 REASSIGN OWNEDDROP OWNED 命令对此目的很有用;有关更多讨论,请参见 第 21.4 节

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

参数

IF EXISTS

如果角色不存在,则不抛出错误。在这种情况下会发出通知。

name

要删除的角色的名称。

注意

PostgreSQL 包含一个程序 dropuser,它具有与该命令相同的功能(实际上,它调用该命令),但可以从命令 shell 中运行。

示例

要删除一个角色

DROP ROLE jonathan;

兼容性

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

另请参见

CREATE ROLEALTER ROLESET ROLE

提交更正

如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用 此表格 报告文档问题。