2013-10-03 14 views

Trả lời

22

Tôi chưa bao giờ thử nó và không có gì thêm thường là nhưng nó chỉ là về việc chạy một truy vấn như (Chạy truy vấn của bạn sau khi START TRANSACTION và sử dụng COMMIT hoặc ROLLBACK tùy thuộc vào kết quả):

mysql_query('START TRANSACTION'); 
$res1 = mysql_query('query1'); 
$res2 = mysql_query('query2'); 
If ($res1 && $res2) { 
    mysql_query('COMMIT'); // commits all queries 
} else { 
    mysql_query('ROLLBACK'); // rollbacks everything 
} 

Vì vậy, nó có thể được chuyển đổi sang wordpress, sử dụng một cái gì đó như thế này

$wpdb->query('START TRANSACTION'); 
$result1 = $wpdb->delete($table, $where, $where_format = null); 
$resul2 = $wpdb->delete($table, $where, $where_format = null); 
if($result1 && $result2) { 
    $wpdb->query('COMMIT'); // if you come here then well done 
} 
else { 
    $wpdb->query('ROLLBACK'); // // something went wrong, Rollback 
} 

Bạn cũng có thể sử dụng try catch như this answer, (không WordPress nhưng cùng một ý tưởng). Bạn có thể đọc thêm về các chức năng truy vấn $wpdb (querydelete) trên Codex.

Công cụ lưu trữ MyISAM mặc định của MySQL không hỗ trợ giao dịch, do đó không phải là tùy chọn. Nếu bạn muốn sử dụng giao dịch, hãy đảm bảo tất cả các bảng của bạn được định nghĩa là InnoDB.

Các vấn đề liên quan