setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); return $con; } public function test() { for($i = 0; $i < 10; $i++) { $con = $this->getConnection(); $con->beginTransaction(); try { $con->query("UPDATE tblsrc SET val = val - 1 WHERE id = 1"); if($i % 2 != 0) throw new Problem(); $con->query("UPDATE tbltrg SET val = val + 1 WHERE id = 1"); $con->commit(); } catch(Problem $ex) { $con->rollback(); echo "Problem\r\n"; } } } } DB::demo(new StandardTransaction()); ?>