为什么80%的码农都做不了架构师?>>>   

事务处理是数据库数据处理中经常用到的一个功能,特别是商务之类的应用,比如a给b打了钱,数据库中a的钱数应该减少,b的钱数应该增加,

若a数据操作成功,而b的数据因某些原因操作失败,这时数据就会有问题。这种相关的系列操作需要进行事务处理。

事务是DBMS得执行单位。一般来说,事务是必须满足4个条件(ACID):

1.  原子性(Autmic):        事务在执行性,要做到“要么不做,要么全做!”,不允许事务部分执行。

2.  一致性(Consistency): 事务得操作应该使使数据库从一个一致状态转变倒另一个一致得状态。修改的数据之间应该有所关联。

3.  隔离性(Isolation):      如果多个事务并发执行,应象各个事务独立执行一样。

4.  持久性(Durability):    一个成功执行得事务对数据库得作用是持久得,即使数据库应故障出错,也应该能够恢复。

下面看Thinkphp的一个例子。

//实例化的数据库对象
$model = new Model();
//开启事务
$model->startTrans();
//默认结果
$judge = true;
//数据操作
$sql1 ="delete  from TableOne  where ...";
$sql2 ="delete  from TableTwo  where ...";
//执行数据操作
$result1 = $model->query($sql1);
if(!$result1)  $judge = false;
$result2 = $model->query($sql2);
if(!$result2)  $judge = false;if($judge){
//如果2条都执行成功,则提交完成数据库操作$db->commit();
}else{
//如果有其中一条执行失败,则rollback,所有数据还原到sql1和sql2都没执行的状态。$db->rollback();
}

事务处理对防止数据污染,保持数据正常有着重大的作用。对有比较重要关联,重要数据的连续操作,尽量用上事务操作。

转载于:https://my.oschina.net/jiec/blog/288116

ThinkPHP学习笔记 事务处理相关推荐

  1. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  2. thinkphp学习笔记7—多层MVC

    原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...

  3. thinkphp学习笔记8—命名空间

    原文:thinkphp学习笔记8-命名空间 新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制. 需要给类库定义所在的命名空间,命名空间 ...

  4. ThinkPHP 学习笔记 ( 一 ) 项目部署:应用部署方式与模块分组部署方式

    /*** ThinkPHP version 3.1.3*/ ThinkPHP ( 官方网站:http://www.thinkphp.cn/ ) 目前最新版本是 3.2.2,它要求 PHP 的版本高于 ...

  5. thinkphp学习笔记13-15集

    13集: ThinkPHP3.1.3使用视频教程--后台登录验证与自动运行方法_标清.flv 14集: ThinkPHP3.1.3使用视频教程--自定义SESSION处理DB驱动与添加Redis处理驱 ...

  6. thinkPHP学习笔记(2)

    1.调试模式 设置调试模式部分代码如下: 1 <?php 2 define('APP_DEBUG',TRUE); // 开启调试模式 常量定义代码 3 require '/ThinkPHP框架所 ...

  7. thinkPHP学习笔记

    (1)thinkphp中方法的调用 1.调用当前控制器中的方法有以下三种 class Index{public function index() {return "当前控制器中的index方 ...

  8. 后盾网 thinkphp 学习笔记

    挺感谢后盾网的黄老师,讲的很好,受益匪浅. 补充一下,是3.1.3的版本.现在3.2了. 1.__PUBLIC__和__UPLOADS__一样,但是和__ROOT__不同. __ROOT__ 就是为当 ...

  9. ThinkPHP学习笔记(三)有关项目中URL的路径问题和使用frame搭建页面的

    在thinkphp中有很多自定义的常量路径,具体如下: // echo "<div style='font-weight:normal;color:blue;float:left;wi ...

最新文章

  1. 恕我直言,牛逼哄哄的MongoDB你可能只会30%
  2. 推荐一套开源中文课:自然语言处理(NLP)专题
  3. CSS 技巧tips1
  4. Request 对象 错误 'ASP 0104 : 80004005' 解决方法
  5. HTTP协议工作原理(与HTTPS的区别)
  6. HTML的段落与注释元素
  7. Linux学习笔记第二周第四次课(2月1日)
  8. Fatal error: Class 'GearmanClient' not found解决方法
  9. 树莓派安装基地Debian-Pi-Aarch64系统 SSD启动
  10. 如何制作网页棋牌游戏
  11. 用PySimpleGui做户籍资料查询工具
  12. 环信服务器发送消息,环信服务器发送消息
  13. 微信动态二维码管理引流源码/微信活码/自动换群/微信朋友圈加群二维码
  14. leetcode-1786
  15. Aria2c 使用举例
  16. php excel 导出 插件,php不使用插件导出excel
  17. dashboard 镜像源_kubernetes相关镜像源地址汇总
  18. is running 8724480B beyond the ‘PHYSICAL‘ memory limit.
  19. Android Studio连接安卓手机驱动
  20. 中国总裁唐骏:说出微软的秘密

热门文章

  1. 虚拟机+ubuntu 图形界面和终端界面的切换
  2. 区块链技术没那么复杂,别被大佬们忽悠晕了
  3. 数据库配置下拉框没有数据库可选
  4. Android 系统启动(一)---fork机制
  5. SQL*PLUS常用命令
  6. 微博爬虫“免登录”技巧详解及Java实现
  7. 移动基于Percona XTRADB Cluster的大数据解决方式
  8. 第五十一条:当心字符串的连接性能
  9. hp-ux 11.23挂载ISO文件
  10. __try 内外不能有 c++ 代码,要封装成一个函数