========= DROP ROLE ========= .. container:: refentry :name: SQL-DROPROLE .. container:: titlepage .. container:: refnamediv .. rubric:: DROP ROLE :name: drop-role DROP ROLE — 移除一个数据库角色 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis DROP ROLE [ IF EXISTS ] name [, ...] .. container:: refsect1 :name: id-1.9.3.126.5 .. rubric:: 描述 :name: 描述 ``DROP ROLE``\ 移除指定的角色。要删除一个 超级用户角色,你必须自己就是一个超级用户。要删除一个非超级用户角 色,你必须具有\ ``CREATEROLE``\ 特权。 如果一个角色仍然被集簇中任何数据库中引用,它就不能被移除。如果尝试 移除将会抛出一个错误。在删除该角色前,你必须删除(或者重新授予所有 权)它所拥有的所有对象并且收回该已经授予给该角色的在其他对象上的特 权。\ `REASSIGN OWNED `__\ 和\ `DROP OWNED `__ 不过,没有必要移除涉及该角色的角色成员关系。 ``DROP ROLE``\ 会自动收回目标角色在其他角色中的成员 关系,以及其他角色在目标角色中的成员关系。其他角色不会被删除也不 会被影响。 .. container:: refsect1 :name: id-1.9.3.126.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist ``IF EXISTS`` 如果该角色不存在则不要抛出一个错误,而是发出一个提示。 ``name`` 要移除的角色的名称。 .. container:: refsect1 :name: id-1.9.3.126.7 .. rubric:: 注解 :name: 注解 PostgreSQL包括一个程序\ `dropuser `__\ 具有和这个命令完全相同的功能(事实 上它会调用这个命令),但是该程序可以从 shell 运行。 .. container:: refsect1 :name: id-1.9.3.126.8 .. rubric:: 示例 :name: 示例 要删除一个角色: .. code:: programlisting DROP ROLE jonathan; .. container:: refsect1 :name: id-1.9.3.126.9 .. rubric:: 兼容性 :name: 兼容性 SQL 标准定义了\ ``DROP ROLE``\ , 但是它只允许一次删除一个角色并且它指定了和 PostgreSQL不同的特权需求。 .. container:: refsect1 :name: id-1.9.3.126.10 .. rubric:: 另见 :name: 另见 `CREATE ROLE `__, `ALTER ROLE `__, `SET ROLE `__