mysql中的事务处理
来源:互联网 发布:网页远程桌面 centos 编辑:程序博客网 时间:2024/06/08 08:13
1、什么是mysql中的事务?事务就是包含一组不可分了的mysql单元,简而言之就是一组连贯的SQL操作2、事务有什么特征呢?以下特性简称为 :ACID原子性(atom):确保工作单元内的所有操作都成功完成,否则事务将被中止在故障点,和以前的操作将回滚到以前的状态一致性(consistent): 确保数据库正确地改变状态后,成功提交的事务隔离性(insulate): 使事务操作彼此独立的和透明的持久性(durable): 确保提交的事务的结果或效果的系统出现故障的情况下仍然存在3、如果想让一张表支持事务,那么这张表的存储引擎必须是innodb,mysql的存储引擎分为:MyISAM: 它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:.frm(存储表定义)MYD(MYData,存储数据)MYI(MYIndex,存储索引)InnoDB : InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引MEMORY: memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。4、mysql事务的使用步骤:① 开启事务start transaction 或者 begin② 写sql 假设一个场景A向B转账 1000update 表名 set 金额=金额-1000 where name='A'update 表名 set 金额=金额+1000 where name='B'③ 判断sql是否执行成功(其实就是判断sql的执行受影响行数),如果成功:commit; 提交完成整个事务的处理过程,才会真正的进行修改数据如果有一个sql执行失败,那么事务将进行回滚操作:rollback 回滚操作就是说明这组sql中有一个没完成,那么所有数据都不会进行更新5、实例操作:现在用户张三通过手机转账向李四转钱100元:<?phpheader('content-type:text/html;charset=utf-8');//实例化PDO$dsn="mysql:host=127.0.0.1;dbname=test";$db = new PDO($dsn,'root','');try{ //开启事务 $db->beginTransaction(); //定义一个变量,来记录sql受影响条数 $rew = null; //拼写sql语句 $rew = $db->exec("update user set money = money-100 where id=1"); //判断付款人是否成功 if(!$rew){ throw new PDOException('您的账户余额不足!'); } $rew = $db->exec("update user set money = money+100 where id=2"); //判断接收人是否接受成功 if(!$rew){ throw new PDOException('对方账号不存在,转账失败!'); } //提交事务 $db->commit(); echo "转账成功";}catch(PDOException $content){ //执行回滚 $db->rollBack(); exit($content->getMessage());}
0 0
- mysql中的事务处理
- Java中的mysql事务处理
- php中的mysql事务处理
- Java中的mysql事务处理
- mysql中的事务处理
- c++与mysql中的事务处理
- laravel框架中的MySQL事务处理
- django-mysql 中的金钱计算事务处理
- php中的pdo操作mysql事务处理实例
- mysql事务处理
- mysql事务处理
- mysql事务处理
- MySQL事务处理
- mysql 事务处理
- mysql 事务处理
- mysql事务处理
- MySQL事务处理
- mysql事务处理
- 第九届河南省ACM题解
- 剑指offer 11题 【代码的完整性】数值的整数次方
- Hadoop-Streaming实战经验及问题解决方法总结
- html5 手机开发 区分横屏和竖屏, 在CSS方法与js方法
- 在MyEclipse中配置自己的tomcat
- mysql中的事务处理
- java集合类(二)List之ArrayList
- 用Go语言写Android应用 (1) - 用Go写本地应用
- HDU 1107 武林(模拟)
- Java中的时间和日期(下)
- 【Android】使用自定义Adapter优化ListView、修改数据及控件内部布局
- android 解决小米手机上选择照片路径为null情况
- java堆外内存简介
- JSONModel命名中的驼峰(CamelCase)与下划线 (UnderscoreCase)