transaction<T> abstract method

Future<T> transaction<T>(
  1. Future<T> action(
    1. SqlExecutor transaction
    )
)

Runs action inside one database transaction.

The transaction commits when action completes and rolls back when it throws. Drivers invalidate the callback executor after action returns. Callback SqlExecutor.query calls require SqlStatementKind.rowReturning, while SqlExecutor.execute calls require SqlStatementKind.write.

The callback must not issue transaction-control SQL or statements whose dialect implicitly commits, such as MySQL DDL.

Implementation

Future<T> transaction<T>(Future<T> Function(SqlExecutor transaction) action);