1.1.11. Functions for transaction management¶
For general information and examples, see section Transaction control.
Observe the following rules when working with transactions:
The requests in a transaction must be sent to the server as a single block. It is not enough to enclose them between begin and commit or rollback. To ensure they are sent as a single block: put them in a function, or put them all on one line, or use a delimiter so that multi-line requests are handled together.
All database operations in a transaction should use the same storage engine.
It is not safe to access tuple sets that are defined with
and also access tuple sets that are defined with
in the same transaction.
Begin the transaction. Disable implicit yields until the transaction ends. Signal that writes to the write-ahead log will be deferred until the transaction ends. In effect the fiber which executes
box.begin()is starting an “active multi-request transaction”, blocking all other fibers.
End the transaction, and make all its data-change operations permanent.