Transactions

To run queries in a transaction, wrap the code in a transaction block:

dbConn.transaction:
  for i in 11 .. 13:
    discard newUser($i & "@example.com").dup:
      dbConn.insert

If something goes wrong inside a transaction block, i.e. an exception is raised, the transaction is rollbacked.

To rollback a transaction manually, call rollback proc:

try:
  dbConn.transaction:
    for i in 14 .. 16:
      discard newUser($i & "@example.com").dup:
        dbConn.insert
      if i == 15:
        rollback()
except RollbackError:
  echo getCurrentExceptionMsg()
BEGIN
INSERT INTO "User" (email) VALUES(?) <- @['14@example.com']
INSERT INTO "User" (email) VALUES(?) <- @['15@example.com']
ROLLBACK
Rollback transaction.