Я использую Zend_Db для вставки некоторых данных в транзакцию. Моя функция запускает транзакцию, а затем вызывает другой метод, который также пытается запустить транзакцию и, конечно, не удается (я использую MySQL5). Итак, вопрос - как я могу обнаружить, что транзакция уже была начата?
Вот пример кода:
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;
}
Внутри PaymentInstrument :: create есть еще одна инструкция beginTransaction, которая создает исключение, которое говорит о том, что транзакция уже была начата.