服务端同时执行多条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
修改时间 2023-11-14
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。