DROP ROLE — 删除数据库角色
DROP ROLE [ IF EXISTS ] name [, ...]
DROP ROLE 删除指定的一个或多个角色。要删除超级用户角色,您自己必须是超级用户;要删除非超级用户角色,您必须拥有 CREATEROLE 权限,并且已获得该角色的 ADMIN OPTION。
如果角色仍然被集群中的任何数据库引用,则无法删除该角色;如果发生这种情况,则会引发错误。在删除角色之前,您必须删除它拥有的所有对象(或重新分配其所有权),并撤销该角色已被授予的其他对象的任何权限。 REASSIGN OWNED 和 DROP OWNED 命令对此很有用;有关更多讨论,请参阅 第 21.4 节。
但是,没有必要删除涉及该角色的角色成员关系; DROP ROLE 会自动撤销该目标角色在其他角色中的任何成员关系,以及其他角色在目标角色中的任何成员关系。其他角色不会被删除,也不会受到其他影响。
IF EXISTS如果角色不存在,则不引发错误。在这种情况下会发出通知。
name要删除的角色名称。
PostgreSQL 包含一个名为 dropuser 的程序,它具有与此命令相同的功能(实际上,它调用此命令),但可以在命令行外运行。
删除一个角色
DROP ROLE jonathan;
SQL 标准定义了 DROP ROLE,但它只允许一次删除一个角色,并且它指定的权限要求与 PostgreSQL 使用的不同。