Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PDO Nhiều truy vấn:giao dịch cam kết và khôi phục

Vâng, cách tiếp cận của bạn là đúng. Sử dụng Try...catch có thể dẫn đến mã sạch hơn và dễ đọc hơn trong một số trường hợp nhưng cách tiếp cận tổng thể của bạn vẫn ổn.

Nếu đoạn mã của bạn là từ một hàm xử lý các truy vấn DB chứ không phải hàm khác, có lẽ tôi sẽ chuyển đổi cách tiếp cận:

// 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();

Tất nhiên, nếu bạn yêu cầu phải dọn dẹp nhiều trước khi có thể return , thì cách tiếp cận ban đầu của bạn sẽ tốt hơn. Đặc biệt trong những trường hợp này, tôi sẽ xem xét sử dụng PDO ::ERRMODE_EXCEPTION. Điều này có một số lợi ích bổ sung, chẳng hạn như các trường hợp ngoại lệ tự động quay trở lại giao dịch trừ khi chúng bị bắt.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đối tượng của lớp Cơ sở dữ liệu không thể được chuyển đổi thành chuỗi

  2. Chuyển POINT của MySQL thành văn bản trong PHP

  3. Cách chạy tập lệnh PHP vào thời gian đã lên lịch

  4. DELIMITER // làm gì trong Trình kích hoạt?

  5. MySQL TẠO BẢNG NẾU KHÔNG TỒN TẠI -> Lỗi 1050