DROP ROLE
是用于删除数据库角色的 DDL 命令。
DROP ROLE
添加于 PostgreSQL 8.1,取代了现有的 DROP USER
和 DROP GROUP
命令(这些命令保留为 DROP ROLE
的别名)。
用法
DROP ROLE
从 PostgreSQL 实例中删除指定的角色。
在执行 DROP ROLE
之前,必须重新分配或删除 PostgreSQL 实例中该角色拥有的任何对象。
但是,无论其他哪些角色是将要删除的角色的成员,DROP ROLE
都会成功执行。
更改历史记录
- PostgreSQL 8.2
- 添加了
DROP ROLE IF EXISTS ...
语法 (提交 f8b54fe6)
- 添加了
- PostgreSQL 8.1
- 添加 (提交 7762619e)
示例
基本 DROP ROLE
执行
postgres=# DROP ROLE foo; DROP ROLE
尝试删除不存在的角色
postgres=# DROP ROLE foo; ERROR: role "foo" does not exist
安全地尝试删除可能不存在的角色
postgres=# DROP ROLE IF EXISTS foo; NOTICE: role "foo" does not exist, skipping DROP ROLE
尝试删除在当前数据库中仍拥有一个或多个对象的某个角色
postgres=# DROP ROLE foo; ERROR: role "foo" cannot be dropped because some objects depend on it DETAIL: owner of database bar owner of table baz
尝试删除在 PostgreSQL 实例中不同数据库中仍拥有一个或多个对象的某个角色
postgres=# DROP ROLE foo; ERROR: role "foo" cannot be dropped because some objects depend on it DETAIL: 1 object in database bar
参考文献
- PostgreSQL 文档: DROP ROLE
有用链接
- 如何在 PostgreSQL 中使用 DROP ROLE 或 DROP USER - 2022 年 3 月 Laurenz Albe / CyberTec 发布的博文