From 9c279355fbf332dbf6dcebbe10d38e10503bf4dd Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 30 Aug 2002 22:45:25 +0000 Subject: [PATCH] Updates to reflect availability of autocommit option. --- doc/src/sgml/ref/begin.sgml | 47 +++++++++++++++++++++------------ doc/src/sgml/ref/start_transaction.sgml | 23 ++++++++++------ 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/doc/src/sgml/ref/begin.sgml b/doc/src/sgml/ref/begin.sgml index 850bfd77e6..11ca82e6d4 100644 --- a/doc/src/sgml/ref/begin.sgml +++ b/doc/src/sgml/ref/begin.sgml @@ -1,5 +1,5 @@ @@ -103,33 +103,35 @@ WARNING: BEGIN: already a transaction in progress BEGIN initiates a user transaction in chained mode, i.e., all user statements after BEGIN command will be executed in a single transaction until an explicit - , - , - or execution abort. Statements in chained mode are executed much faster, + or + . + Statements are executed more quickly in chained mode, because transaction start/commit requires significant CPU and disk activity. Execution of multiple statements inside a transaction - is also required for consistency when changing several - related tables. + is also useful to ensure consistency when changing several + related tables: other clients will be unable to see the intermediate + states wherein not all the related updates have been done. The default transaction isolation level in PostgreSQL - is READ COMMITTED, where queries inside the transaction see only changes - committed before query execution. So, you have to use + is READ COMMITTED, wherein each query inside the transaction sees changes + committed before that query begins execution. So, you have to use SET TRANSACTION ISOLATION LEVEL SERIALIZABLE - just after BEGIN if you need more rigorous transaction isolation. + just after BEGIN if you need more rigorous transaction + isolation. (Alternatively, you can change the default transaction + isolation level; see the PostgreSQL Administrator's + Guide for details.) In SERIALIZABLE mode queries will see only changes committed before the entire transaction began (actually, before execution of the first DML statement - in a serializable transaction). + in the transaction). - If the transaction is committed, PostgreSQL - will ensure either that all updates are done or else that none of - them are done. Transactions have the standard ACID - (atomic, consistent, isolatable, and durable) property. + Transactions have the standard ACID + (atomic, consistent, isolatable, and durable) properties. @@ -140,9 +142,9 @@ WARNING: BEGIN: already a transaction in progress Notes - Refer to - for further information - about locking tables inside a transaction. + has the same functionality + as BEGIN. @@ -151,6 +153,17 @@ WARNING: BEGIN: already a transaction in progress to terminate a transaction. + + + Refer to + for further information + about locking tables inside a transaction. + + + + If you turn autocommit mode off, then BEGIN + is not required: any SQL command automatically starts a transaction. + diff --git a/doc/src/sgml/ref/start_transaction.sgml b/doc/src/sgml/ref/start_transaction.sgml index 2e657c610b..fb8dd13193 100644 --- a/doc/src/sgml/ref/start_transaction.sgml +++ b/doc/src/sgml/ref/start_transaction.sgml @@ -1,4 +1,8 @@ - + + 2002-07-26 @@ -76,7 +80,7 @@ WARNING: BEGIN: already a transaction in progress This command begins a new transaction. If the isolation level is specified, the new transaction has that isolation level. In all other respects, the behavior of this command is identical to the - BEGIN command. + command. @@ -87,8 +91,8 @@ WARNING: BEGIN: already a transaction in progress The isolation level of a transaction can also be set with the - command. If no isolation level is specified, the level defaults to - . + command. If no isolation level is specified, the default isolation + level is used. @@ -99,11 +103,14 @@ WARNING: BEGIN: already a transaction in progress SQL99 - is the default level in - SQL. PostgreSQL + is the default isolation level in + SQL99, but it is not the usual default in + PostgreSQL: the factory default setting + is READ COMMITTED. + PostgreSQL does not provide the isolation levels - and . Because of multiversion - concurrency control, the level is + and . Because of lack of predicate + locking, the level is not truly serializable. See the User's Guide for details. -- 2.11.0