int txn_begin(DB_TXNMGR *txnp, DB_TXN *parent, DB_TXN **tid);
The txn_begin method creates a new transaction in the transaction manager, copying a pointer to a DB_TXN that uniquely identifies it into the memory referenced by tid.
If the parent argument 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.
Note: transactions may not span threads, i.e., each transaction must begin and end in the same thread, and each transaction may only be used by a single thread.
Note: transactions may not span cursors, i.e., each transaction may only be used by a single cursor.
The txn_begin function returns the value of errno on failure, and 0 on success.
The txn_begin function may fail and return errno for any of the errors specified for the following Berkeley DB and C library functions: abort(3), fcntl(3), fflush(3), fprintf(3), free(3), fsync(3), getpid(3), log_put, lseek(3), memset(3), mmap(3), munmap(3), shmat(3), shmdt(3), strerror(3), vfprintf(3), vsnprintf(3), and write(3).
In addition, the txn_begin function may fail and return errno for the following conditions: