Home Explore Blog CI



postgresql

1st chunk of `doc/src/sgml/ref/reassign_owned.sgml`
adf3eb313189cb14df80579ea065036e54944f8204f27a280000000100000ddc
<!--
doc/src/sgml/ref/reassign_owned.sgml
PostgreSQL documentation
-->

<refentry id="sql-reassign-owned">
 <indexterm zone="sql-reassign-owned">
  <primary>REASSIGN OWNED</primary>
 </indexterm>

 <refmeta>
  <refentrytitle>REASSIGN OWNED</refentrytitle>
  <manvolnum>7</manvolnum>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>REASSIGN OWNED</refname>
  <refpurpose>change the ownership of database objects owned by a database role</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
REASSIGN OWNED BY { <replaceable class="parameter">old_role</replaceable> | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...]
               TO { <replaceable class="parameter">new_role</replaceable> | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>REASSIGN OWNED</command> instructs the system to change
   the ownership of database objects owned by any of the
   <replaceable class="parameter">old_roles</replaceable> to
   <replaceable class="parameter">new_role</replaceable>.
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <variablelist>
   <varlistentry>
    <term><replaceable class="parameter">old_role</replaceable></term>
    <listitem>
     <para>
      The name of a role. The ownership of all the objects within the
      current database, and of all shared objects (databases, tablespaces),
      owned by this role will be reassigned to
      <replaceable class="parameter">new_role</replaceable>.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">new_role</replaceable></term>
    <listitem>
     <para>
      The name of the role that will be made the new owner of the
      affected objects.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </refsect1>

 <refsect1>
  <title>Notes</title>

  <para>
   <command>REASSIGN OWNED</command> is often used to prepare for the
   removal of one or more roles. Because <command>REASSIGN
   OWNED</command> does not affect objects within other databases,
   it is usually necessary to execute this command in each database
   that contains objects owned by a role that is to be removed.
  </para>

  <para>
   <command>REASSIGN OWNED</command> requires membership on both the
   source role(s) and the target role.
  </para>

  <para>
   The <link linkend="sql-drop-owned"><command>DROP OWNED</command></link> command is an alternative that
   simply drops all the database objects owned by one or more roles.
  </para>

  <para>
   The <command>REASSIGN OWNED</command> command does not affect any
   privileges granted to
   the <replaceable class="parameter">old_roles</replaceable> on objects
   that are not owned by them.  Likewise, it does not affect default
   privileges created with <command>ALTER DEFAULT PRIVILEGES</command>.
   Use <command>DROP OWNED</command> to revoke such privileges.
  </para>

  <para>
   See <xref linkend="role-removal"/> for more discussion.
  </para>

 </refsect1>

 <refsect1>
  <title>Compatibility</title>

  <para>
   The <command>REASSIGN OWNED</command> command is a
   <productname>PostgreSQL</productname> extension.
  </para>
 </refsect1>

 <refsect1>
  <title>See Also</title>

  <simplelist type="inline">
   <member><xref linkend="sql-drop-owned"/></member>
   <member><xref linkend="sql-droprole"/></member>
   <member><xref linkend="sql-alterdatabase"/></member>
  </simplelist>
 </refsect1>

</refentry>

Title: REASSIGN OWNED
Summary
The REASSIGN OWNED command in PostgreSQL changes the ownership of database objects owned by one or more roles to a new role. This is often used before removing roles. It requires membership in both the old and new roles and must be run in each database containing objects owned by the role being removed. It does not affect privileges granted to the old roles on objects they don't own or default privileges; DROP OWNED should be used for that.