~drizzle-developers/drizzle/elliott-release

« back to all changes in this revision

Viewing changes to docs/transactional.rst

  • Committer: Patrick Crews
  • Date: 2011-02-01 20:33:06 UTC
  • mfrom: (1845.2.288 drizzle)
  • Revision ID: gleebix@gmail.com-20110201203306-mwq2rk0it81tlwxh
Merged Trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
 
7
7
   start_transaction
8
8
   commit
9
 
   rollback 
 
9
   rollback
10
10
   savepoints
11
11
 
12
12
The essence of a transaction is that it groups multiple steps into a single, all-or-nothing operation. Drizzle is a transactional database by default and by design, meaning that changes and queries to the database appear to be Atomic, Consistent, Isolated, and Durable (ACID). This means that Drizzle implements `serializable <http://en.wikipedia.org/wiki/Serializability>`_, ACID transactions, even if the transaction is interrupted.
13
13
 
 
14
NOTE: Drizzle still supports non-transactional storage engines, and if these are used then you will not get transactional behaviour with them. The default engine is transactional.
 
15
 
14
16
Transactions are a group of operations that form tasks and stores them as a single operation, or if that operation is not possible it removes all changes attempted. Transactions are controlled via START TRANSACTION, ROLLBACK, and COMMIT. Savepoints are implemented to allow for a lower level of granularity.
15
17
 
16
18
A COMMIT statement ends a transaction within Drizzle and makes all changes visible to other users.  The order of events is typically to issue a START TRANSACTION statement, execute one or more SQL statements, and then issue a COMMIT statement. Alternatively, a ROLLBACK statement can be issued, which undoes all the work performed since START TRANSACTION was issued. A COMMIT statement will also release any existing savepoints that may be in use.
17
19
 
18
 
Drizzle can operate in an autocommit mode, where each statement is committed, via: ::
 
20
Drizzle can operate in an autocommit mode, where each statement is committed at the end of statement, via: ::
19
21
 
20
22
        SET AUTOCOMMIT= 1
21
23
 
 
24
If you set AUTOCOMMIT=1 during a transaction, that transaction will be committed as part of the SET AUTOCOMMIT=1 statement.
 
25
 
 
26
Transactional DDL is currently not supported, although it may be in the future. This means that although currently you will get a ER_TRANSACTION_DDL_NOT_SUPPORTED error message if you try and execute DDL statements within a transaction, in future versions of Drizzle they may succeed.
 
27
 
22
28
Currently DDL operations are performed as a single transaction, this limitation will be lifted in the future.
23
29
 
24
30
For various reasons, Drizzle may have to ROLLBACK a statement or transaction