MYSQL事务的开启与提交
2023-09-27 14:21:47 时间
MYSQL 事务处理主要有两种方法:
1、用 BEGIN, ROLLBACK, COMMIT来实现
- BEGIN 开始一个事务
- ROLLBACK 事务回滚
- COMMIT 事务确认
2、直接用 SET 来改变 MySQL 的自动提交模式:
- SET AUTOCOMMIT=0 禁止自动提交
- SET AUTOCOMMIT=1 开启自动提交
对于一个MYSQL数据库(InnoDB),事务的开启与提交模式无非下面这两种情况:
1>若参数autocommit=0,事务则在用户本次对数据进行操作时自动开启,在用户执行commit命令时提交,用户本次对数据库开始进行操作到用户执行commit命令之间的一系列操作为一个完整的事务周期。若不执行commit命令,系统则默认事务回滚。总而言之,当前情况下事务的状态是自动开启手动提交。
2>若参数autocommit=1(系统默认值),事务的开启与提交又分为两种状态:
①手动开启手动提交:当用户执行start transaction命令时(事务初始化),一个事务开启,当用户执行commit命令时当前事务提交。从用户执行start transaction命令到用户执行commit命令之间的一系列操作为一个完整的事务周期。若不执行commit命令,系统则默认事务回滚。
②自动开启自动提交:如果用户在当前情况下(参数autocommit=1)未执行start transaction命令而对数据库进行了操作,系统则默认用户对数据库的每一个操作为一个孤立的事务,也就是说用户每进行一次操作系都会即时提交或者即时回滚。这种情况下用户的每一个操作都是一个完整的事务周期。
<?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn, "set names utf8"); mysqli_select_db( $conn, 'RUNOOB' ); mysqli_query($conn, "SET AUTOCOMMIT=0"); // 设置为不自动提交,因为MYSQL默认立即执行 mysqli_begin_transaction($conn); // 开始事务定义 if(!mysqli_query($conn, "insert into runoob_transaction_test (id) values(8)")) { mysqli_query($conn, "ROLLBACK"); // 判断当执行失败时回滚 } if(!mysqli_query($conn, "insert into runoob_transaction_test (id) values(9)")) { mysqli_query($conn, "ROLLBACK"); // 判断执行失败时回滚 } mysqli_commit($conn); //执行事务 mysqli_close($conn); ?>
Django的事务开启两种方式
#第一种 导入模块 from django.db import transaction with transaction.atomic(): ... #第二种 装饰器 @transaction.atomic def post(self,request): ... sid=transaction.savepoint() #开启事务 ... transaction.savepoint_rollback(sid) # 回滚 ... transaction.savepoint_commit(sid) # 提交
相关文章
- MySQL 性能调优的10个方法
- 【MySQL高级】MySQL的事务
- 为什么 MySQL 执行完 Delete 操作之后,空间没有释放?
- MySQL:使用mysqldump在Windows数据库定时备份
- 106分布式电商项目 - MySQL优化(查询优化)
- MySQL 事务详解
- 【mysql】执行use databases很慢或者卡了
- Mysql事务
- Eclipse连接mysql数据库
- 为什么 MySQL 回滚事务也会导致 ibd 文件增大?
- MySQL 的 事务和隔离级别
- 一文讲清楚MySQL事务隔离级别和实现原理,开发人员必备知识点
- MySQL 事务机制
- 查看mysql事务的隔离级别
- 如何在mysql下实现事务的提交与回滚
- 深入理解mysql参数
- Mysql高性能学习笔记一则
- MySql查询正在进行中的事务
- mysql show profiles使用分析sql性能
- MySQL事务学习:ACID实现原理
- Docker安装MySQL
- MySQL - 深入理解 MySQL 的事务和隔离级别