WordPress 支持事务

服务端同时执行多条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

修改时间 2022-10-16

真诚赞赏,手留余香
赞赏
PHP
WordPress 获取当前主题文件夹的路径
2022-06-03
MySQL,Node.js
Node.js MySQL2 如何编写事务
2022-06-15
ngtwewy
随机推荐
SVG 图标制作指南
console 输出彩色日志
Koa.js 中间件 koa-csrf
PHP-FPM 对三种子进程的管理模式
node-sass 和 dart-sass 的区别
display:inline-block元素之间空隙的产生原因和解决办法
CentOS 7 SSH 使用证书登录
Rollup 教程
Node.js 爬虫常见问题
JavaScript console 的用法

微信联系我

夜间模式切换
回到顶部