Có thể thực hiện các cuộc gọi chức năng trong khối giao dịch PDO không? Đây là mã đơn giản (sử dụng cơ sở dữ liệu MySql) ...Giao dịch PDO và các cuộc gọi chức năng
try{
$db->beginTransaction();
// call to function that creates user
$user_id = create_user();
// call to function that creates company
$company_id = create_company();
// call to function to link user & company
add_user_to_company($user_id, $company_id);
$db->commit();
}
Nếu điều này không thể xảy ra khi sử dụng giao dịch, chiến lược được đề xuất là gì?
Để làm rõ hơn, các giao dịch lồng nhau không được hỗ trợ trong MySQL, vì vậy hãy đảm bảo bạn không bắt đầu giao dịch trong bất kỳ chức năng nào, nếu không sẽ [tự động cam kết giao dịch đang chờ xử lý] (http: //dev.mysql .com/doc/refman/5.5/en/implicit-commit.html). –
Ngoài ra, hãy đảm bảo không sử dụng bất kỳ loại DDL nào (tạo/thay đổi/hủy câu lệnh) vì chúng sẽ thực hiện bất kỳ giao dịch nào bạn đã thực hiện. – Kris