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

Nếu một giao dịch PHP PDO không thành công, tôi có phải rollback () một cách rõ ràng không?

Nếu bạn không commit không phải rollback một giao dịch đã mở và nó không được commit ở bất kỳ nơi nào sau này trong tập lệnh của bạn, nó sẽ không được commited (như được nhìn thấy bởi công cụ cơ sở dữ liệu) và sẽ tự động quay lại ở cuối tập lệnh của bạn.


Tuy nhiên, tôi (tốt, gần như) luôn luôn commit hoặc rollback rõ ràng các giao dịch tôi mở, vì vậy:

  • Không có rủi ro xảy ra lỗi (như xác nhận "do nhầm lẫn" ở phần sau của tập lệnh)
  • Mã dễ đọc / hiểu hơn :khi một người nhìn thấy $db->rollback() , anh ấy biết chắc chắn tôi muốn giao dịch được khôi phục và anh ấy không phải nghĩ " anh ấy thực sự muốn khôi phục hay anh ấy đã quên điều gì đó? Và sau này trong kịch bản thì sao? "


Công cụ DB không "nhìn thấy" PDOException:nó được PHP ném vào trong các điều kiện khác nhau - nhưng cơ sở dữ liệu không tự phục hồi bất cứ thứ gì:

  • hoặc một giao dịch được cam kết
  • hoặc nó được khôi phục lại
  • hoặc nó không được cam kết rõ ràng cũng như không được hoàn nguyên - có nghĩa là nó không được cam kết - có nghĩa là những gì đã được sửa đổi không được sửa đổi "thực sự"



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng nhóm cột làm khóa duy nhất trong MySQL

  2. Sự khác biệt giữa INSERT và UPDATE trong MySQL là gì?

  3. vấn đề nhiều cơ sở dữ liệu php

  4. lệnh php mysql UPDATE sẽ không cập nhật

  5. Chọn phạm vi ngày MySQL với date_format