はい、あなたのアプローチは正しいです。 Try...catch
を使用する 場合によっては、よりクリーンで読みやすいコードにつながる可能性がありますが、全体的なアプローチは問題ありません。
コードフラグメントがDBクエリを処理する関数からのものであり、それ以外のものではない場合は、おそらくアプローチを切り替えます。
// Begin Transaction
$this->db->beginTransaction();
// Fire Queries
if(!$query_one->execute()){
$this->db->rollback();
// other clean-up goes here
return;
}
if(!$query_two->execute()){
$this->db->rollback();
// other clean-up goes here
return;
}
$this->db->commit();
もちろん、return
を実行する前に、大量のクリーンアップを実行する必要がある場合は、 、その後、元のアプローチが優れています。特にこれらの場合、私はPDO::ERRMODE_EXCEPTIONの使用を検討します。これには、例外がキャッチされない限りトランザクションを自動的にロールバックするなど、いくつかの追加の利点があります。