ulib/3party/sqlpp11/docs/Transactions.md
tqcq 99c258107b
All checks were successful
rpcrypto-build / build (Release, hisiv510.toolchain.cmake) (push) Successful in 1m24s
rpcrypto-build / build (Debug, himix200.toolchain.cmake) (push) Successful in 1m30s
rpcrypto-build / build (Debug, hisiv510.toolchain.cmake) (push) Successful in 1m43s
linux-mips64-gcc / linux-gcc-mips64el (push) Successful in 1m47s
linux-x64-gcc / linux-gcc (push) Successful in 2m11s
rpcrypto-build / build (Release, himix200.toolchain.cmake) (push) Successful in 3m19s
linux-hisiv500-gcc / linux-gcc-hisiv500 (push) Successful in 3m39s
feat/support_orm (#2)
Co-authored-by: tqcq <99722391+tqcq@users.noreply.github.com>
Reviewed-on: #2
2024-01-06 13:56:45 +00:00

1004 B

Transactions

Transactions are simple in sqlpp11. Assuming you have a connection called db, you can start and commit a transaction just like this:

auto tx = start_transaction(db);
// do something
tx.commit();

If you need to rollback the transaction, you can call it's rollback() member, for instance like this:

auto tx = start_transaction(db);
try
{
  // do something
  tx.commit();
}
catch (...)
{
  tx.rollback();
}

In case you call neither commit() nor rollback() on a transaction before it goes out of scope, it will call rollback() in its destructor. This automatic rollback will be reported by the connection.

More options

You can turn off reporting for automatic rollback in the destructor by passing sqlpp::quiet_auto_rollback.

auto tx = start_transaction(db, sqlpp::quiet_auto_rollback);

You can also specify the isolation level for the transaction:

auto tx = start_transaction(db, ::sqlpp::isolation_level::repeatable_read);