Home Explore Blog CI



postgresql

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

<refentry id="sql-rollback">
 <indexterm zone="sql-rollback">
  <primary>ROLLBACK</primary>
 </indexterm>

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

 <refnamediv>
  <refname>ROLLBACK</refname>
  <refpurpose>abort the current transaction</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
ROLLBACK [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>ROLLBACK</command> rolls back the current transaction and causes
   all the updates made by the transaction to be discarded.
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <indexterm zone="sql-rollback-chain">
   <primary>chained transactions</primary>
  </indexterm>

  <variablelist>
   <varlistentry id="sql-rollback-transaction">
    <term><literal>WORK</literal></term>
    <term><literal>TRANSACTION</literal></term>
    <listitem>
     <para>
      Optional key words. They have no effect.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry id="sql-rollback-chain">
    <term><literal>AND CHAIN</literal></term>
    <listitem>
     <para>
      If <literal>AND CHAIN</literal> is specified, a new (not aborted)
      transaction is immediately started with the same transaction
      characteristics (see <xref linkend="sql-set-transaction"/>) as the
      just finished one.  Otherwise, no new transaction is started.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </refsect1>

 <refsect1>
  <title>Notes</title>

  <para>
   Use <link linkend="sql-commit"><command>COMMIT</command></link> to
   successfully terminate a transaction.
  </para>

  <para>
   Issuing <command>ROLLBACK</command> outside of a transaction
   block emits a warning and otherwise has no effect.  <command>ROLLBACK AND
   CHAIN</command> outside of a transaction block is an error.
  </para>
 </refsect1>

 <refsect1>
  <title>Examples</title>

  <para>
   To abort all changes:
<programlisting>
ROLLBACK;
</programlisting></para>
 </refsect1>

 <refsect1>
  <title>Compatibility</title>

  <para>
   The command <command>ROLLBACK</command> conforms to the SQL standard.  The
   form <literal>ROLLBACK TRANSACTION</literal> is a PostgreSQL extension.
  </para>
 </refsect1>

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

  <simplelist type="inline">
   <member><xref linkend="sql-begin"/></member>
   <member><xref linkend="sql-commit"/></member>
   <member><xref linkend="sql-rollback-to"/></member>
  </simplelist>
 </refsect1>
</refentry>

Chunks
51b65fff (1st chunk of `doc/src/sgml/ref/rollback.sgml`)
Title: ROLLBACK - Abort the current transaction
Summary
The ROLLBACK command aborts the current transaction, discarding all updates made during the transaction. It includes optional keywords like WORK or TRANSACTION, which have no effect, and AND CHAIN, which starts a new transaction with the same characteristics as the previous one. Issuing ROLLBACK outside a transaction block emits a warning and has no effect. The command conforms to the SQL standard, with ROLLBACK TRANSACTION being a PostgreSQL extension.