WordPress 中 wpdb 如何支持 MySQL 事务

江河/ 2023年05月03日/ WordPress/ 浏览 882

事务安全在一些需求中是必须要保证的,比如购买商品后,需要生成订单并减少商品库存,如果一步失败则应回退数据。


在 WordPress 中 wpdb 封装了各种操作 MySQL 的方法,但是唯独缺少对事务的支持。


不过还好,wpdb 有一个 query 方法,可以直接调用 MySQL 命令。


使用举例:


function create_order($goods_id, $stock, $number) {
    global $wpdb;
    $wpdb->query('START TRANSACTION');

    $wpdb->insert(
        $wpdb->prefix . 'order',
        [
            'goods_id' => $goods_id,
            'number' => $number,
            'status' => 0,
            'createtime' => current_time('mysql')
        ]
    );
    
    if ($wpdb->last_error) {
        $wpdb->query('ROLLBACK');
        return;
    }
    
    $wpdb->update(
        $wpdb->prefix . 'goods',
        [
            'stock' => $stock - $number
        ],
        [
            'id' => $goods_id
        ]
    );

    if ($wpdb->last_error) {
        $wpdb->query('ROLLBACK');
        return;
    }

    $wpdb->query('COMMIT');
}


发表评论

暂无评论,抢个沙发...

客服 工单