I've never tried it and there is nothing extra ordinary but it's just about running a query like (Run your queries after START TRANSACTION
and use COMMIT
or ROLLBACK
depending on the result) :
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
}
So, it could be converted to wordpress, using something like this
$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
}
You may also use try catch
like this answer, (not WordPress but same idea). You can read more about $wpdb
query functions (query
and delete
) on Codex.
MySQL’s default MyISAM storage engine does not support transactions,
so it’s not an option. If you want to use transactions, ensure all
your tables are defined as InnoDB.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…