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