Wie kann festgestellt werden, dass die Transaktion bereits gestartet wurde?

Ich benutze Zend_Db um einige Daten in eine Transaktion einzufügen. Meine Funktion startet eine Transaktion und ruft dann eine andere Methode auf, die ebenfalls versucht, eine Transaktion zu starten und natürlich fehlschlägt (ich verwende MySQL5). Die Frage ist also: Wie erkenne ich, dass die Transaktion bereits gestartet wurde? Hier ist ein Beispielcode:

       try {
                    Zend_Registry::get('database')->beginTransaction();

                    $totals = self::calculateTotals($Cart);
                    $PaymentInstrument = new PaymentInstrument;
                    $PaymentInstrument->create();
                    $PaymentInstrument->validate();
                    $PaymentInstrument->save();

                    Zend_Registry::get('database')->commit();
                    return true;

            } catch(Zend_Exception $e) {
                    Bootstrap::$Log->err($e->getMessage());
                    Zend_Registry::get('database')->rollBack();
                    return false;
            }

Inside PaymentInstrument :: create gibt es eine weitere beginTransaction-Anweisung, die die Ausnahme ausgibt, dass die Transaktion bereits gestartet wurde.

Antworten auf die Frage(22)

Ihre Antwort auf die Frage