---
name: "Catmandu::Transactional"
section: "3pm"
platform: "linux"
package: "libcatmandu-perl"
version: "1.2024-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::Transactional"
---

# Catmandu::Transactional(3pm)

Optional role for transactional stores

## NAME

Catmandu::Transactional - Optional role for transactional stores

## SYNOPSIS

```
    # bag will be untouched
    my $store->transaction(sub {
        $store->bag('books')->add({title => 'Time must have a stop'});
        die;
    });
```

## METHODS

### transaction($sub)

`"transaction"` takes a coderef that will be executed in the context of a transaction. If an error is thrown, the transaction will rollback. If the code executes successfully, the transaction will be committed. There is no support for nested transactions, nested calls to `"transaction"` will simply be subsumed by their parent transaction.
