@deeky666 Ok thank you, I'm discovering the concept of transaction propagation, but I'm not sure how this would apply to `createTransaction()`, let's imagine the scenario mentioned in your link:

    function signUp() {
        $em->createTransaction(TransactionPropagation::REQUIRED);
        ...
        sendEmail();
    }

    function sendEmail() {
        $em->createTransaction(TransactionPropagation::SUPPORTS);
        // ...
    }

Because `signUp` *requires* a transaction, we could make `createTransaction()` begin a transaction if one is not already open; but because `sendEmail()` *supports* the existing transaction, it would **not** begin a new one, hence the name `createTransaction()` is misleading IMO.

So I don't think that this concept would apply to `createTransaction()`, but rather to another method in either `Connection` or `TransactionManager`:

    function signUp() {
        $txManager->setPropagation(TransactionManager::PROPAGATION_REQUIRED);
        ...
        sendEmail();
    }

    function sendEmail() {
        $txManager->setPropagation(TransactionManager::PROPAGATION_SUPPORTS);
        // ...
    }

This method, `setPropagation()`, would internally check if a transaction is already running, and either do nothing, call `createTransaction()`, or throw an exception.

Does this make sense?