Как использовать транзакцию mysql в WordPress?

Как использовать транзакцию mysql в WordPress? Я хочу удалить 10 дочерних, если один из них активен, общее удаление будет откатом.

Я никогда не пробовал, и нет ничего экстраординарного, но он просто запускает такой запрос: (Запустите ваши запросы после START TRANSACTION и используйте COMMIT или ROLLBACK зависимости от результата):

 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 } 

Таким образом, он может быть преобразован в wordpress, используя что-то вроде этого

 $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 } 

Вы также можете использовать try catch как этот ответ (не WordPress, но ту же идею). Вы можете больше узнать о $wpdb запроса $wpdb ( query и delete ) в Codex .

Механизм хранения MyISAM по умолчанию MySQL не поддерживает транзакции, поэтому это не вариант. Если вы хотите использовать транзакции, убедитесь, что все ваши таблицы определены как InnoDB.