我正在使用 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 语句,它产生表示事务已经开始的异常。