REASSIGN OWNED

更改数据库角色所拥有的数据库对象的所有权。

概要

REASSIGN OWNED BY { <old_role> | CURRENT_USER | SESSION_USER } [, ...]
               TO { <new_role> | CURRENT_USER | SESSION_USER }

描述

REASSIGN OWNED 将由任何旧角色拥有的数据库对象的所有权更改为新角色。

参数

  • old_role
    • 角色的名称。当前数据库中所有对象以及该角色拥有的所有共享对象(数据库、表空间)的所有权将重新分配给新角色。
  • new_role
    • 将被设为受影响对象新所有者的角色的名称。

注意

REASSIGN OWNED 通常用于为移除一个或多个角色做准备。由于该命令不会影响其他数据库中的对象,因此通常需要在每个包含待移除角色所拥有对象的数据库中执行此命令。

REASSIGN OWNED 需要同时具备源角色和目标角色的权限。

DROP OWNED 命令是一种替代方案,它会直接删除由一个或多个角色拥有的所有数据库对象。

REASSIGN OWNED 命令不会影响旧角色在非其拥有的对象上已授予的权限。同样,它也不会影响通过 ALTER DEFAULT PRIVILEGES 创建的默认权限。若需撤销此类权限,请使用 DROP OWNED 命令。

示例

将名为 sally 和 bob 的角色拥有的任何数据库对象重新分配给 admin:

REASSIGN OWNED BY sally, bob TO admin;

兼容性

REASSIGN OWNED 命令是数据库扩展功能。

另见

DROP OWNED, DROP ROLE, ALTER DATABASE