11<!--
2- $Header: /cvsroot/pgsql/doc/src/sgml/ref/begin.sgml,v 1.18 2002/08/04 04:31:44 momjian Exp $
2+ $Header: /cvsroot/pgsql/doc/src/sgml/ref/begin.sgml,v 1.19 2002/08/30 22:45:25 tgl Exp $
33PostgreSQL documentation
44-->
55
@@ -103,33 +103,35 @@ WARNING: BEGIN: already a transaction in progress
103103 <command>BEGIN</command> initiates a user transaction in chained mode,
104104 i.e., all user statements after <command>BEGIN</command> command will
105105 be executed in a single transaction until an explicit
106- <xref linkend="sql-commit" endterm="sql-commit-title">,
107- <xref linkend="sql-rollback" endterm="sql-rollback-title">,
108- or execution abort. Statements in chained mode are executed much faster,
106+ <xref linkend="sql-commit" endterm="sql-commit-title"> or
107+ <xref linkend="sql-rollback" endterm="sql-rollback-title">.
108+ Statements are executed more quickly in chained mode,
109109 because transaction start/commit requires significant CPU and disk
110110 activity. Execution of multiple statements inside a transaction
111- is also required for consistency when changing several
112- related tables.
111+ is also useful to ensure consistency when changing several
112+ related tables: other clients will be unable to see the intermediate
113+ states wherein not all the related updates have been done.
113114 </para>
114115
115116 <para>
116117 The default transaction isolation level in
117118 <productname>PostgreSQL</productname>
118- is READ COMMITTED,where queries inside the transactionsee only changes
119- committed before query execution. So, you have to use
119+ is READ COMMITTED,wherein each query inside the transactionsees changes
120+ committed beforethat query begins execution. So, you have to use
120121 <command>SET TRANSACTION ISOLATION LEVEL SERIALIZABLE</command>
121- just after <command>BEGIN</command> if you need more rigorous transaction isolation.
122+ just after <command>BEGIN</command> if you need more rigorous transaction
123+ isolation. (Alternatively, you can change the default transaction
124+ isolation level; see the <citetitle>PostgreSQL Administrator's
125+ Guide</citetitle> for details.)
122126 In SERIALIZABLE mode queries will see only changes committed before
123127 the entire
124128 transaction began (actually, before execution of the first DML statement
125- ina serializable transaction).
129+ inthe transaction).
126130 </para>
127131
128132 <para>
129- If the transaction is committed, <productname>PostgreSQL</productname>
130- will ensure either that all updates are done or else that none of
131- them are done. Transactions have the standard <acronym>ACID</acronym>
132- (atomic, consistent, isolatable, and durable) property.
133+ Transactions have the standard <acronym>ACID</acronym>
134+ (atomic, consistent, isolatable, and durable) properties.
133135 </para>
134136
135137 <refsect2 id="R2-SQL-BEGIN-3">
@@ -140,9 +142,9 @@ WARNING: BEGIN: already a transaction in progress
140142 Notes
141143 </title>
142144 <para>
143- Refer to <xref linkend="sql-lock" endterm="sql-lock-title">
144- for further information
145- about locking tables inside a transaction .
145+ <xref linkend="sql-start-transaction"
146+ endterm="sql-start-transaction-title"> has the same functionality
147+ as <command>BEGIN</> .
146148 </para>
147149
148150 <para>
@@ -151,6 +153,17 @@ WARNING: BEGIN: already a transaction in progress
151153 <xref linkend="SQL-ROLLBACK" endterm="SQL-ROLLBACK-TITLE">
152154 to terminate a transaction.
153155 </para>
156+
157+ <para>
158+ Refer to <xref linkend="sql-lock" endterm="sql-lock-title">
159+ for further information
160+ about locking tables inside a transaction.
161+ </para>
162+
163+ <para>
164+ If you turn <literal>autocommit</> mode off, then <command>BEGIN</>
165+ is not required: any SQL command automatically starts a transaction.
166+ </para>
154167 </refsect2>
155168 </refsect1>
156169