我有一個TRIGGER用於MySQL數據表,當發生數據提供錯誤時,它會用SIGNAL引發異常。我如何在PHP中用PDO捕獲這個異常?MySQL 5.5信號和PDO異常
在此先感謝。
上的更新我的問題
的更多信息:我執行多個查詢在一個事務中,我想回滾事務,如果他們中的一個,因爲有一個信號失效。目前一個信號被激活,但所有其他查詢都被執行。
另一個更新
到目前爲止我有:
try {
$db->beginTransaction();
if (!$db->query('UPDATE accounts SET amount = amount - 10 WHERE id = 1')) {
throw new Exception($db->errorInfo()[2]);
}
if (!$db->query('UPDATE accounts SET amount = amount + 10 WHERE id = 2')) {
throw new Exception($db->errorInfo()[2]);
}
$db->commit();
} catch (Exception $e) {
$db->rollback();
echo 'There was an error: ' . $e->getMessage();
}
這是做處理異常交易的正確方法? 對不起,如果我的問題太寬泛。
即也是可能的。你正在生成你自己的例外。但是,您錯過了詳細的錯誤消息。我的解決方案示例代碼中的過程方式也做同樣的事情,或多或少具有相同的邏輯流程。 – somnath
我也沒有看到$ mysqli-> autocommit(FALSE),這是管理事務的強制性要求。確保你擁有它。 – somnath
PDO手冊說beginTransaction()關閉自動提交。或者我錯了? – Vladimir