Nếu giao dịch không thành công vì bất kỳ lý do gì, mã sẽ dừng ở dòng xảy ra lỗi kết thúc sau đó việc thực thi sẽ chuyển trực tiếp đến khối bắt. Vì vậy, nó là đủ theo cách bạn viết nó trong Code Block 2.
Lưu ý rằng bạn phải luôn ném lại Ngoại lệ sau khi khôi phục. Nếu không, bạn sẽ không bao giờ biết đâu là vấn đề. Vì vậy, nó nên được
try{
$stmt = $db->prepare(... 1 ...);
$stmt->execute();
$stmt = $db->prepare(... 2 ...);
$stmt->execute();
$stmt = $db->prepare(... 3 ...);
$stmt->execute();
$db->commit();
return true;
}catch(Exception $e){
$db->rollBack();
throw $e;
}