WordPress中使用MySql数据库事务,同时执行多条sql语句,保证完整性
2022-05-24
服务端同时执行多条sql语句,保证业务逻辑完整性,需要用到数据库事务功能。
WordPress数据库一般用的是MySql,数据库事务与原生用法大同小异,常用简单封装:
/**
* 事务 - 开始
*/
function pury_custom_transaction_begin(){
global $wpdb;
return $wpdb->query("START TRANSACTION");
}
/**
* 事务 - 提交
*/
function pury_custom_transaction_commit(){
global $wpdb;
return $wpdb->query("COMMIT");
}
/**
* 事务 - 回滚
*/
function pury_custom_transaction_rollback(){
global $wpdb;
return $wpdb->query("ROLLBACK");
}
具体示例:
pury_custom_transaction_begin();
$result1 = $wpdb->query("DELETE FROM $table_shares WHERE id=$id");
$result2 = $wpdb->query("DELETE FROM $table_share_user WHERE id=$id");
// 保证两条sql同时执行成功,才实际提交
if ($result1 && $result2) {
$result = pury_custom_transaction_commit();
return new \WP_REST_Response(['code' => 0, 'data' => $result]);
}
$result = pury_custom_transaction_rollback();
return new WP_Error( '数据库连接失败!', __( '操作失败,数据库连接错误!' ),
array( 'status' => 400 )
);
附:MySql存储引擎。
默认是InnoDB类型,支持数据库事务。
参考资料
https://stackoverflow.com/questions/2708237/php-mysql-transactions-examples
https://www.it1352.com/1662919.html
https://blog.csdn.net/King_weng/article/details/106507133
(版权归cpury.com所有,转载请注明出处。)