DROP ROLE — 移除一个数据库角色
DROP ROLE [ IF EXISTS ] name
[, ...]
DROP ROLE
移除指定的角色。要删除一个
超级用户角色,你必须自己就是一个超级用户。要删除一个非超级用户角
色,你必须具有CREATEROLE
特权。
如果一个角色仍然被集簇中任何数据库中引用,它就不能被移除。如果尝试 移除将会抛出一个错误。在删除该角色前,你必须删除(或者重新授予所有 权)它所拥有的所有对象并且收回该已经授予给该角色的在其他对象上的特 权。REASSIGN OWNED和DROP OWNED 命令可以用于这个目的。更多讨论请见第 21.4 节。
不过,没有必要移除涉及该角色的角色成员关系。
DROP ROLE
会自动收回目标角色在其他角色中的成员
关系,以及其他角色在目标角色中的成员关系。其他角色不会被删除也不
会被影响。
IF EXISTS
如果该角色不存在则不要抛出一个错误,而是发出一个提示。
name
要移除的角色的名称。
PostgreSQL包括一个程序dropuser具有和这个命令完全相同的功能(事实 上它会调用这个命令),但是该程序可以从 shell 运行。
要删除一个角色:
DROP ROLE jonathan;
SQL 标准定义了DROP ROLE
,
但是它只允许一次删除一个角色并且它指定了和
PostgreSQL不同的特权需求。