ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# DROP ROLE ## Name DROP ROLE -- 删除一个数据库角色 ## Synopsis ``` DROP ROLE [ IF EXISTS ] _name_ [, ...] ``` ## 描述 `DROP ROLE`删除指定的角色。要删除一个超级用户角色, 你自己必须也是一个超级用户;要删除非超级用户角色,你必须有`CREATEROLE`权限。 不能删除仍然被集群中的任意数据库引用的角色,如果想删除它,会抛出一个错误。 在删除一个角色之前,你必须删除它拥有的所有对象(或者重新赋予他们新的所有者), 并且撤销赋予该角色的任何权限。[REASSIGN OWNED](#calibre_link-618)和 [DROP OWNED](#calibre_link-615)命令可以达到这个目的。 不过,没有必要删除涉及该角色的角色成员关系;`DROP ROLE` 自动撤销目标角色在任何其它角色里面的成员关系,以及其它角色在目标角色里的成员关系。 其它角色不会被删除,也不会受到其它影影响。 ## 参数 `IF EXISTS` 如果指定的角色不存在,那么发出一个 notice 而不是抛出一个错误。 `_name_` 要删除的角色名字。 ## 注意 PostgreSQL包含了一个[dropuser](#calibre_link-45)程序, 有着和这个命令相同的功能(实际上,它调用这个命令),但是它可以从命令行上运行。 ## 例子 删除一个角色: ``` DROP ROLE jonathan; ``` ## 兼容性 SQL 标准定义了`DROP ROLE`,但它只允许每次删除一个角色, 并且它声明了和PostgreSQL使用的不同的权限要求。 ## 又见 [CREATE ROLE](#calibre_link-10), [ALTER ROLE](#calibre_link-17), [SET ROLE](#calibre_link-21)