2002-01-20 23:19:57 +01:00
|
|
|
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/set_transaction.sgml,v 1.8 2002/01/20 22:19:57 petere Exp $ -->
|
2000-06-18 23:24:54 +02:00
|
|
|
<refentry id="SQL-SET-TRANSACTION">
|
2000-11-24 21:16:40 +01:00
|
|
|
<docinfo>
|
|
|
|
<date>2000-11-24</date>
|
|
|
|
</docinfo>
|
|
|
|
|
2000-06-18 23:24:54 +02:00
|
|
|
<refmeta>
|
2000-07-14 17:27:14 +02:00
|
|
|
<refentrytitle id="SQL-SET-TRANSACTION-TITLE">SET TRANSACTION</refentrytitle>
|
2000-06-18 23:24:54 +02:00
|
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
|
|
</refmeta>
|
2000-11-24 21:16:40 +01:00
|
|
|
|
2000-06-18 23:24:54 +02:00
|
|
|
<refnamediv>
|
|
|
|
<refname>SET TRANSACTION</refname>
|
2001-09-03 14:57:50 +02:00
|
|
|
<refpurpose>set the characteristics of the current transaction</refpurpose>
|
2000-06-18 23:24:54 +02:00
|
|
|
</refnamediv>
|
2000-11-24 21:16:40 +01:00
|
|
|
|
2000-06-18 23:24:54 +02:00
|
|
|
<refsynopsisdiv>
|
|
|
|
<synopsis>
|
|
|
|
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
|
2001-10-09 20:46:00 +02:00
|
|
|
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL
|
|
|
|
{ READ COMMITTED | SERIALIZABLE }
|
2000-06-18 23:24:54 +02:00
|
|
|
</synopsis>
|
|
|
|
</refsynopsisdiv>
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
<title>Description</title>
|
|
|
|
|
|
|
|
<para>
|
2000-11-24 21:16:40 +01:00
|
|
|
This command sets the transaction isolation level. The
|
|
|
|
<command>SET TRANSACTION</command> command sets the characteristics
|
|
|
|
for the current SQL-transaction. It has no effect on any subsequent
|
2002-01-20 23:19:57 +01:00
|
|
|
transactions. This command cannot be used after the first query or data-modification
|
2000-11-24 21:16:40 +01:00
|
|
|
statement (<command>SELECT</command>, <command>INSERT</command>,
|
|
|
|
<command>DELETE</command>, <command>UPDATE</command>,
|
|
|
|
<command>FETCH</command>, <command>COPY</command>) of a transaction
|
|
|
|
has been executed. <command>SET SESSION CHARACTERISTICS</command>
|
|
|
|
sets the default transaction isolation level for each transaction
|
|
|
|
for a session. <command>SET TRANSACTION</command> can override it
|
|
|
|
for an individual transaction.
|
2000-06-18 23:24:54 +02:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The isolation level of a transaction determines what data the
|
|
|
|
transaction can see when other transactions are running concurrently.
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>READ COMMITTED</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
A statement can only see rows committed before it began. This
|
|
|
|
is the default.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>SERIALIZABLE</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The current transaction can only see rows committed before
|
2002-01-20 23:19:57 +01:00
|
|
|
first query or data-modification statement was executed in this transaction.
|
2000-06-18 23:24:54 +02:00
|
|
|
</para>
|
|
|
|
<tip>
|
|
|
|
<para>
|
|
|
|
Intuitively, serializable means that two concurrent
|
|
|
|
transactions will leave the database in the same state as if
|
|
|
|
the two has been executed strictly after one another in either
|
|
|
|
order.
|
|
|
|
</para>
|
|
|
|
</tip>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
2001-07-01 00:03:26 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Notes</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The session default transaction isolation level can also be set
|
2001-10-09 20:46:00 +02:00
|
|
|
with the command
|
|
|
|
<programlisting>
|
|
|
|
SET default_transaction_isolation = '<replaceable>value</replaceable>'
|
|
|
|
</programlisting>
|
|
|
|
and in the
|
2001-07-01 00:03:26 +02:00
|
|
|
configuration file. Consult the <citetitle>Administrator's
|
|
|
|
Guide</citetitle> for more information.
|
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
2000-07-14 17:27:14 +02:00
|
|
|
<refsect1 id="R1-SQL-SET-TRANSACTION-3">
|
2000-06-18 23:24:54 +02:00
|
|
|
<title>Compatibility</title>
|
|
|
|
|
2000-07-14 17:27:14 +02:00
|
|
|
<refsect2 id="R2-SQL-SET-TRANSACTION-4">
|
|
|
|
<title>SQL92, SQL99</title>
|
2000-06-18 23:24:54 +02:00
|
|
|
|
2000-07-14 17:27:14 +02:00
|
|
|
<para>
|
|
|
|
SERIALIZABLE is the default level in <acronym>SQL</acronym>.
|
2001-12-08 04:24:40 +01:00
|
|
|
<productname>PostgreSQL</productname> does not provide the
|
|
|
|
isolation levels <option>READ UNCOMMITTED</option>
|
|
|
|
and <option>REPEATABLE READ</option>. Because
|
2002-01-20 23:19:57 +01:00
|
|
|
of multiversion concurrency control, the serializable level is not
|
2000-07-14 17:27:14 +02:00
|
|
|
truly serializable. See the <citetitle>User's Guide</citetitle> for
|
|
|
|
details.
|
|
|
|
</para>
|
2000-06-18 23:24:54 +02:00
|
|
|
|
2000-07-14 17:27:14 +02:00
|
|
|
<para>
|
|
|
|
In <acronym>SQL</acronym> there are two other transaction
|
2000-11-24 21:16:40 +01:00
|
|
|
characteristics that can be set with these commands: whether the
|
2000-07-14 17:27:14 +02:00
|
|
|
transaction is read-only and the size of the diagnostics area.
|
2001-12-08 04:24:40 +01:00
|
|
|
Neither of these concepts are supported in
|
|
|
|
<productname>PostgreSQL</productname>.
|
2000-07-14 17:27:14 +02:00
|
|
|
</para>
|
|
|
|
</refsect2>
|
2000-06-18 23:24:54 +02:00
|
|
|
</refsect1>
|
|
|
|
</refentry>
|
|
|
|
|
2000-07-14 17:27:14 +02:00
|
|
|
<!-- Keep this comment at the end of the file
|
|
|
|
Local variables:
|
|
|
|
mode:sgml
|
|
|
|
sgml-omittag:nil
|
|
|
|
sgml-shorttag:t
|
|
|
|
sgml-minimize-attributes:nil
|
|
|
|
sgml-always-quote-attributes:t
|
|
|
|
sgml-indent-step:1
|
|
|
|
sgml-indent-data:t
|
|
|
|
sgml-parent-document:nil
|
|
|
|
sgml-default-dtd-file:"../reference.ced"
|
|
|
|
sgml-exposed-tags:nil
|
|
|
|
sgml-local-catalogs:("/usr/lib/sgml/catalog")
|
|
|
|
sgml-local-ecat-files:nil
|
|
|
|
End:
|
|
|
|
-->
|