# Transactions
TIP
Examples in multiple languages can be found at following links: immudb SDKs examples (opens new window)
immudb supports transactions both on key-value and SQL level, but interactive transactions are supported only on SQL with the exception of execAll
method, that provides some additional properties.
Interactive transactions are a way to execute multiple SQL statements in a single transaction. This makes possible to delegate application logic to SQL statements - a very common use case is for example checking if the balance > 0 before making a purchase.
In order to create a transaction, you must call the NewTx()
method on the client instance. The resulting object is a transaction object that can be used to execute multiple SQL statements, queries, commit or rollback.
Following methods are exposed by the transaction object:
Commit() CommittedSQLTx, error
Rollback() error
SQLExec(sql, params) error
SQLQuery(sql, params) SQLQueryResult, error
It's possible to rollback a transaction by calling the Rollback()
method. In this case, the transaction object is no longer valid and should not be used anymore.
To commit a transaction, you must call the Commit()
method.
Note: immudb implements multi-version concurrency control. Thus multiple read-write transactions may be concurrently processed. It's up the application to handle read conflict errors. In case a read-write conflict is detected, the sdk will return the 25P02
CodInFailedSqlTransaction error code.