<!--$Id: txn_begin.html,v 1.2 2004/03/30 01:21:57 jtownsen Exp $--> <!--Copyright 1997-2003 by Sleepycat Software, Inc.--> <!--All rights reserved.--> <!--See the file LICENSE for redistribution information.--> <html> <head> <title>Berkeley DB: DbEnv::txn_begin</title> <meta name="description" content="Berkeley DB: An embedded database programmatic toolkit."> <meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,Java,C,C++"> </head> <body bgcolor=white> <a name="2"><!--meow--></a> <table width="100%"><tr valign=top> <td> <h3>DbEnv::txn_begin</h3> </td> <td align=right> <a href="../api_cxx/api_index.html"><img src="../images/api.gif" alt="API"></a> <a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a> </td></tr></table> <hr size=1 noshade> <tt> <h3><pre> #include <db_cxx.h> <p> int DbEnv::txn_begin(DbTxn *parent, DbTxn **tid, u_int32_t flags); </pre></h3> <hr size=1 noshade> <h3>Description: DbEnv::txn_begin</h3> <p>The DbEnv::txn_begin method creates a new transaction in the environment and copies a pointer to a <a href="../api_cxx/txn_class.html">DbTxn</a> that uniquely identifies it into the memory to which <b>tid</b> refers. Calling the <a href="../api_cxx/txn_abort.html">DbTxn::abort</a>, <a href="../api_cxx/txn_commit.html">DbTxn::commit</a> or <a href="../api_cxx/txn_discard.html">DbTxn::discard</a> methods will discard the returned handle.</p> <p><b>Note: Transactions may only span threads if they do so serially; that is, each transaction must be active in only a single thread of control at a time. This restriction holds for parents of nested transactions as well; not two children may be concurrently active in more than one thread of control at any one time.</b></p> <p><b>Note: Cursors may not span transactions; that is, each cursor must be opened and closed within a single transaction.</b></p> <p><b>Note: A parent transaction may not issue any Berkeley DB operations -- except for DbEnv::txn_begin, <a href="../api_cxx/txn_abort.html">DbTxn::abort</a> and <a href="../api_cxx/txn_commit.html">DbTxn::commit</a> -- while it has active child transactions (child transactions that have not yet been committed or aborted).</b></p> <p>The DbEnv::txn_begin method either returns a non-zero error value or throws an exception that encapsulates a non-zero error value on failure, and returns 0 on success. </p> <h3>Parameters</h3> <p><dl compact> <p><dt><b>flags</b><dd> The <b>flags</b> parameter must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or more of the following values: <p><dl compact> <p><dt><a name="DB_DIRTY_READ">DB_DIRTY_READ</a><dd>All read operations performed by the transaction may read modified but not yet committed data. Silently ignored if the <a href="../api_cxx/db_open.html#DB_DIRTY_READ">DB_DIRTY_READ</a> flag was not specified when the underlying database was opened. <p><dt><a name="DB_TXN_NOSYNC">DB_TXN_NOSYNC</a><dd>Do not synchronously flush the log when this transaction commits or prepares. This means the transaction will exhibit the ACI (atomicity, consistency, and isolation) properties, but not D (durability); that is, database integrity will be maintained but it is possible that this transaction may be undone during recovery. <p>This behavior may be set for a Berkeley DB environment using the <a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a> method. Any value specified to this method overrides that setting.</p> <p><dt><a name="DB_TXN_NOWAIT">DB_TXN_NOWAIT</a><dd>If a lock is unavailable for any Berkeley DB operation performed in the context of this transaction, cause the operation to return DB_LOCK_DEADLOCK or throw a <a href="../api_cxx/deadlock_class.html">DbDeadlockException</a> immediately instead of blocking on the lock. <p><dt><a name="DB_TXN_SYNC">DB_TXN_SYNC</a><dd>Synchronously flush the log when this transaction commits or prepares. This means the transaction will exhibit all of the ACID (atomicity, consistency, isolation, and durability) properties. <p>This behavior is the default for Berkeley DB environments unless the <a href="../api_cxx/env_set_flags.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a> flag was specified to the <a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a> method. Any value specified to this method overrides that setting.</p> </dl> <p><dt><b>parent</b><dd> If the <b>parent</b> parameter is non-NULL, the new transaction will be a nested transaction, with the transaction indicated by <b>parent</b> as its parent. Transactions may be nested to any level. In the presence of distributed transactions and two-phase commit, only the parental transaction, that is a transaction without a <b>parent</b> specified, should be passed as an parameter to <a href="../api_cxx/txn_prepare.html">DbTxn::prepare</a>. </dl> <h3>Errors</h3> <p>If the maximum number of concurrent transactions has been reached, the DbEnv::txn_begin method will fail and either return ENOMEM or throw a <a href="../api_cxx/memp_class.html">DbMemoryException</a> exception.</p> <hr size=1 noshade> <h3>Class</h3> <a href="../api_cxx/env_class.html">DbEnv</a>, <a href="../api_cxx/txn_class.html">DbTxn</a> <h3>See Also</h3> <a href="../api_cxx/txn_list.html">Transaction Subsystem and Related Methods</a> </tt> <table width="100%"><tr><td><br></td><td align=right> <a href="../api_cxx/api_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a> </td></tr></table> <p><font size=1><a href="../sleepycat/legal.html">Copyright (c) 1996-2003</a> <a href="http://www.sleepycat.com">Sleepycat Software, Inc.</a> - All rights reserved.</font> </body> </html>