<!--
doc/src/sgml/ref/alter_subscription.sgml
PostgreSQL documentation
-->

<refentry id="SQL-ALTERSUBSCRIPTION">
 <indexterm zone="sql-altersubscription">
  <primary>ALTER SUBSCRIPTION</primary>
 </indexterm>

 <refmeta>
  <refentrytitle>ALTER SUBSCRIPTION</refentrytitle>
  <manvolnum>7</manvolnum>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>ALTER SUBSCRIPTION</refname>
  <refpurpose>change the definition of a subscription</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
ALTER SUBSCRIPTION <replaceable class="PARAMETER">name</replaceable> WITH ( <replaceable class="PARAMETER">suboption</replaceable> [, ... ] ) ]

<phrase>where <replaceable class="PARAMETER">suboption</replaceable> can be:</phrase>

    SLOT NAME = <replaceable class="PARAMETER">slot_name</replaceable>
    | SYNCHRONOUS_COMMIT = <replaceable class="PARAMETER">synchronous_commit</replaceable>

ALTER SUBSCRIPTION <replaceable class="PARAMETER">name</replaceable> SET PUBLICATION <replaceable class="PARAMETER">publication_name</replaceable> [, ...] { REFRESH WITH ( <replaceable class="PARAMETER">puboption</replaceable> [, ... ] ) | NOREFRESH }
ALTER SUBSCRIPTION <replaceable class="PARAMETER">name</replaceable> REFRESH PUBLICATION WITH ( <replaceable class="PARAMETER">puboption</replaceable> [, ... ] )

<phrase>where <replaceable class="PARAMETER">puboption</replaceable> can be:</phrase>

    COPY DATA | NOCOPY DATA

ALTER SUBSCRIPTION <replaceable class="PARAMETER">name</replaceable> OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
ALTER SUBSCRIPTION <replaceable class="PARAMETER">name</replaceable> RENAME TO <replaceable>new_name</replaceable>
ALTER SUBSCRIPTION <replaceable class="PARAMETER">name</replaceable> CONNECTION '<replaceable>conninfo</replaceable>'
ALTER SUBSCRIPTION <replaceable class="PARAMETER">name</replaceable> ENABLE
ALTER SUBSCRIPTION <replaceable class="PARAMETER">name</replaceable> DISABLE
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>ALTER SUBSCRIPTION</command> can change most of the subscription
   properties that can be specified
   in <xref linkend="sql-createsubscription">.
  </para>

  <para>
   To alter the owner, you must also be a direct or indirect member of the
   new owning role. The new owner has to be a superuser
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <variablelist>
   <varlistentry>
    <term><replaceable class="parameter">name</replaceable></term>
    <listitem>
     <para>
      The name of a subscription whose properties are to be altered.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">new_owner</replaceable></term>
    <listitem>
     <para>
      The user name of the new owner of the subscription.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">new_name</replaceable></term>
    <listitem>
     <para>
      The new name for the subscription.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>CONNECTION '<replaceable class="parameter">conninfo</replaceable>'</literal></term>
    <term><literal>SLOT NAME = <replaceable class="parameter">slot_name</replaceable></literal></term>
    <term><literal>SYNCHRONOUS_COMMIT = <replaceable class="PARAMETER">synchronous_commit</replaceable></literal></term>
    <listitem>
     <para>
      These clauses alter properties originally set by
      <xref linkend="SQL-CREATESUBSCRIPTION">.  See there for more
      information.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>SET PUBLICATION <replaceable class="parameter">publication_name</replaceable></literal></term>
    <listitem>
     <para>
      Changes list of subscribed publications. See
      <xref linkend="SQL-CREATESUBSCRIPTION"> for more information.
     </para>
     <para>
      When <literal>REFRESH</literal> is specified, this command will also
      act like <literal>REFRESH PUBLICATION</literal>. When
      <literal>NOREFRESH</literal> is specified, the comamnd will not try to
      refresh table information.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>REFRESH PUBLICATION</literal></term>
    <listitem>
     <para>
      Fetch missing table information from publisher. This will start
      replication of tables that were added to the subscribed-to publications
      since the last invocation of <command>REFRESH PUBLICATION</command> or
      since <command>CREATE SUBSCRIPTION</command>.
     </para>
     <para>
      The <literal>COPY DATA</literal> and <literal>NOCOPY DATA</literal>
      options specify if the existing data in the publications that are being
      subscribed to should be copied. <literal>COPY DATA</literal> is the
      default.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>ENABLE</literal></term>
    <listitem>
     <para>
      Enables the previously disabled subscription, starting the logical
      replication worker at the end of transaction.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>DISABLE</literal></term>
    <listitem>
     <para>
      Disables the running subscription, stopping the logical replication
      worker at the end of transaction.
     </para>
    </listitem>
   </varlistentry>

  </variablelist>
 </refsect1>

 <refsect1>
  <title>Examples</title>

  <para>
   Change the publication subscribed by a subscription to
   <literal>insert_only</literal>:
<programlisting>
ALTER SUBSCRIPTION mysub SET PUBLICATION insert_only;
</programlisting>
  </para>

  <para>
   Disable (stop) the subscription:
<programlisting>
ALTER SUBSCRIPTION mysub DISABLE;
</programlisting>
  </para>
 </refsect1>

 <refsect1>
  <title>Compatibility</title>

  <para>
   <command>ALTER SUBSCRIPTION</command> is a <productname>PostgreSQL</>
   extension.
  </para>
 </refsect1>

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

  <simplelist type="inline">
   <member><xref linkend="sql-createsubscription"></member>
   <member><xref linkend="sql-dropsubscription"></member>
   <member><xref linkend="sql-createpublication"></member>
   <member><xref linkend="sql-alterpublication"></member>
  </simplelist>
 </refsect1>
</refentry>
