Berkeley DB Reference Version 5.3.33

DB_ENV->txn_begin()

#include <db.h>

int
DB_ENV->txn_begin(DB_ENV *env,
    DB_TXN *parent, DB_TXN **tid, u_int32_t flags);  

The DB_ENV->txn_begin() method creates a new transaction in the environment and copies a pointer to a DB_TXN that uniquely identifies it into the memory to which tid refers. Calling the DB_TXN->abort(), DB_TXN->commit() or DB_TXN->discard() methods will discard the returned handle.

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; no two children may be concurrently active in more than one thread of control at any one time.

Note

Cursors may not span transactions; that is, each cursor must be opened and closed within a single transaction.

Note

A parent transaction may not issue any Berkeley DB operations — except for DB_ENV->txn_begin(), DB_TXN->abort() and DB_TXN->commit() — while it has active child transactions (child transactions that have not yet been committed or aborted).

The DB_ENV->txn_begin() method returns a non-zero error value on failure and 0 on success.

Parameters

parent

If the parent parameter is non-NULL, the new transaction will be a nested transaction, with the transaction indicated by parent 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 parent specified, should be passed as an parameter to DB_TXN->prepare().

flags

The flags parameter must be set to 0 or by bitwise inclusively OR'ing together one or more of the following values:

Errors

The DB_ENV->txn_begin() method may fail and return one of the following non-zero errors:

ENOMEM

The maximum number of concurrent transactions has been reached.

Class

DB_ENV, DB_TXN

See Also

Transaction Subsystem and Related Methods