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

Ví dụ về giao dịch PHP + MySQL

Ý tưởng tôi thường sử dụng khi làm việc với các giao dịch trông giống như sau (mã bán giả) :

try {
    // First of all, let's begin a transaction
    $db->beginTransaction();
    
    // A set of queries; if one fails, an exception should be thrown
    $db->query('first query');
    $db->query('second query');
    $db->query('third query');
    
    // If we arrive here, it means that no exception was thrown
    // i.e. no query has failed, and we can commit the transaction
    $db->commit();
} catch (\Throwable $e) {
    // An exception has been thrown
    // We must rollback the transaction
    $db->rollback();
    throw $e; // but the error must be handled anyway
}

Lưu ý rằng, với ý tưởng này, nếu một truy vấn không thành công, một Ngoại lệ phải được ném ra:
  • PDO có thể làm điều đó, tùy thuộc vào cách bạn định cấu hình nó
  • khác, với một số API khác, bạn có thể phải kiểm tra kết quả của hàm được sử dụng để thực thi một truy vấn và tự đưa ra một ngoại lệ.

Thật không may, không có ma thuật nào liên quan. Bạn không thể chỉ đặt một chỉ dẫn ở đâu đó và thực hiện các giao dịch một cách tự động:bạn vẫn phải xác định cụ thể nhóm truy vấn nào phải được thực hiện trong một giao dịch.

Ví dụ:khá thường xuyên, bạn sẽ có một vài truy vấn trước giao dịch (trước khi begin ) và một vài truy vấn khác sau giao dịch (sau commit hoặc rollback ) và bạn sẽ muốn những truy vấn đó được thực thi bất kể điều gì đã xảy ra (hoặc không) trong giao dịch.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_LENGTH () - Trả về độ dài của tài liệu JSON trong MySQL

  2. MySQL chuyển đổi chuỗi ngày thành dấu thời gian Unix

  3. Cách hoạt động của hàm REGEXP_LIKE () trong MySQL

  4. Sử dụng JDeveloper với Cơ sở dữ liệu MySQL và Cơ sở dữ liệu Oracle trên AWS RDS, Phần 3

  5. Sử dụng chế độ xem MySQL