MySQL的事务的处理
2017-11-23 09:39
295 查看
步骤:
1.开启事务 start transaction
当我们开启一个事务的时候,我们对sql的操作都发生在内存中,但是没有真正的反馈到数据库磁盘的文件中!
2.回滚 rollback
回滚,就是恢复到事务开启之前的最原始的状态!
注意:回滚操作会自动的关闭一个事务,如果想再次执行事务,需要重新开启事务!
3.提交 commit
总结事务的步骤:
1, 开启事务
2, 如果执行成功,就提交commit
3, 如果有任何一条sql语句执行失败,则回滚rollback!
典型例子:
事务处理最典型的就是借还钱。下面以张三向李四还1000元为例
首先查看数据库中各自的钱数
下面是处理还钱事务的代码:
结果:
下面,我们故意把其中一个字段写错,看看事务是否正常处理,数据库中的钱数是否有变化!
结果:
结果是还钱失败,并且数据库中各自的钱数没有变化,说明当某一条语句未执行成功时,事物不会提交,而会回滚,把数据恢复到开始事务之前的原始状态,这也是使用事务的作用,即只有当事务中所有sql语句全部执行成功,事务才会提交,否则会回滚!
1.开启事务 start transaction
当我们开启一个事务的时候,我们对sql的操作都发生在内存中,但是没有真正的反馈到数据库磁盘的文件中!
2.回滚 rollback
回滚,就是恢复到事务开启之前的最原始的状态!
注意:回滚操作会自动的关闭一个事务,如果想再次执行事务,需要重新开启事务!
3.提交 commit
事务的基本原理
普通的执行,之所以是立即执行并生效,因为默认的,MySQL对sql语句的执行是自动提交的!所以,开启一个事务的本质,就是关闭了以前的自动提交的功能,而是由用户手动提交(利用commit语句)!总结事务的步骤:
1, 开启事务
2, 如果执行成功,就提交commit
3, 如果有任何一条sql语句执行失败,则回滚rollback!
典型例子:
事务处理最典型的就是借还钱。下面以张三向李四还1000元为例
首先查看数据库中各自的钱数
下面是处理还钱事务的代码:
<?php /** * MySQL实现事务操作 */ echo "<meta charset=utf-8>"; // 1 连接数据库 $link = @mysql_connect('localhost','root','') or die('连接数据库失败'); mysql_select_db('test',$link); mysql_query('set names utf8'); // 2 开启事务 mysql_query("start transaction"); //设置一个变量,用来判断所有sql语句是否成功 $flag = true; // 2.1执行事务中的一组sql语句 // 李四的money+1000 $sql = "update pdo set mone=money+1000 where name='李四'"; $res = mysql_query($sql); if (!$res) { //若sql语句执行失败,把$falg设置为false $flag = false; } //张三的money-1000 $sql = "update pdo set money=money-1000 where name='张三'"; $res = mysql_query($sql); if (!$res) { //若sql语句执行失败,把$falg设置为false $flag = false; } // 2.2 判断事务是否执行成功 if ($flag) { //所有sql语句执行成功,把sql语句提交 mysql_query('commit'); echo "还钱成功!"; }else{ // 如其中一条执行失败,则回滚到事务开启之前的状态 mysql_query('rollback'); echo "还钱失败!"; }
结果:
下面,我们故意把其中一个字段写错,看看事务是否正常处理,数据库中的钱数是否有变化!
// 李四的money+1000 $sql = "update pdo set mone=money+1000 where name='李四'"; //把moeny字段错写成mone
结果:
结果是还钱失败,并且数据库中各自的钱数没有变化,说明当某一条语句未执行成功时,事物不会提交,而会回滚,把数据恢复到开始事务之前的原始状态,这也是使用事务的作用,即只有当事务中所有sql语句全部执行成功,事务才会提交,否则会回滚!
相关文章推荐
- php与mysql事务处理
- MYSQL--事务处理
- mysql的事务处理以及隔离级别详解
- PHP与MYSQL事务处理
- mysql的事务处理与锁表
- MySQL事务处理
- mysql 添加添加事务处理
- mysql 事务处理,事务操作,JDBC中事务的使用,事务的sql语句,
- MYSQL的事务处理功能
- mysql事务处理用法与实例详解
- mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- PHP_MySQL高并发加锁事务处理
- MySQL(十三)事务处理和字符集
- MyEclipse及Hibernate/MySQL开发的事务处理及UML图示范
- 让MYSQL支持事务处理
- 资深架构师Sum的故事:(Mysql)InnoDB下,存储过程中事务的处理
- MYSQL--事务处理
- AAA关于MySQL的事务处理及隔离级别
- MySQL的事务处理功能
- MYSQL分页存储过程及事务处理