mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Add command variants COMMIT AND CHAIN and ROLLBACK AND CHAIN, which start new transactions with the same transaction characteristics as the just finished one, per SQL standard. Support for transaction chaining in PL/pgSQL is also added. This functionality is especially useful when running COMMIT in a loop in PL/pgSQL. Reviewed-by: Fabien COELHO <coelho@cri.ensmp.fr> Discussion: https://www.postgresql.org/message-id/flat/28536681-324b-10dc-ade8-ab46f7645a5a@2ndquadrant.com
113 lines
2.5 KiB
Plaintext
113 lines
2.5 KiB
Plaintext
<!--
|
|
doc/src/sgml/ref/end.sgml
|
|
PostgreSQL documentation
|
|
-->
|
|
|
|
<refentry id="sql-end">
|
|
<indexterm zone="sql-end">
|
|
<primary>END</primary>
|
|
</indexterm>
|
|
|
|
<refmeta>
|
|
<refentrytitle>END</refentrytitle>
|
|
<manvolnum>7</manvolnum>
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>END</refname>
|
|
<refpurpose>commit the current transaction</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsynopsisdiv>
|
|
<synopsis>
|
|
END [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]
|
|
</synopsis>
|
|
</refsynopsisdiv>
|
|
|
|
<refsect1>
|
|
<title>Description</title>
|
|
|
|
<para>
|
|
<command>END</command> commits the current transaction. All changes
|
|
made by the transaction become visible to others and are guaranteed
|
|
to be durable if a crash occurs. This command is a
|
|
<productname>PostgreSQL</productname> extension
|
|
that is equivalent to <xref linkend="sql-commit"/>.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Parameters</title>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>WORK</literal></term>
|
|
<term><literal>TRANSACTION</literal></term>
|
|
<listitem>
|
|
<para>
|
|
Optional key words. They have no effect.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>AND CHAIN</literal></term>
|
|
<listitem>
|
|
<para>
|
|
If <literal>AND CHAIN</literal> is specified, a new 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 <xref linkend="sql-rollback"/> to
|
|
abort a transaction.
|
|
</para>
|
|
|
|
<para>
|
|
Issuing <command>END</command> when not inside a transaction does
|
|
no harm, but it will provoke a warning message.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Examples</title>
|
|
|
|
<para>
|
|
To commit the current transaction and make all changes permanent:
|
|
<programlisting>
|
|
END;
|
|
</programlisting></para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Compatibility</title>
|
|
|
|
<para>
|
|
<command>END</command> is a <productname>PostgreSQL</productname>
|
|
extension that provides functionality equivalent to <xref
|
|
linkend="sql-commit"/>, which is
|
|
specified in the SQL standard.
|
|
</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"/></member>
|
|
</simplelist>
|
|
</refsect1>
|
|
</refentry>
|