How to use mysql transaction in wordpress?

前端 未结 1 543
花落未央
花落未央 2020-12-09 11:30

How to use mysql transaction in wordpress? I want delete 10 child, if one is active, the total delete will be rollback.

相关标签:
1条回答
  • 2020-12-09 12:01

    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.

    0 讨论(0)
提交回复
热议问题