zoukankan      html  css  js  c++  java
  • 事务操作

    事务的操作分为两种,一种是自动事务(默认的),一种是手动事务。

    第一步:开启事务,告诉系统以下的所有操作,不要直接写入到数据库中,先存到事务日志。语法:start transaction;

    第二步:执行sql语句。

    第三步:提交事务(commit;)或者回滚事务(rollback;),要注意的是:如果我们选择提交事务,则将事务日志存储的记录直接更新到数据库中,并清除事务日志,如果我们选择回滚事务,则直接将事务日志清除,所有在开启事务至回滚事务之间的操作全部失效,保持原有的数据库记录不变;提交事务之后不能再回滚事务。

    用一个例子来说明问题,

    这里创建了一个表,原始状态是这样的

      

    1.下面我们开启事务

    2.接着做的是,减少durant的账户余额;

    通过上图,durant的账户余额显示减少了1000,但实际上,由于我们开启了事务,数据表真实的数据并没有同步更新,为了验证这个论断,我们重新打开一个数据库客户端,查询表中的数据;

    如上右图,还是保持最初的值。显然数据库的事务安全机制起了作用,当我们开启事务(手动)之后,其后一系列操作并没有直接写入数据库,而是存入了事务日志。

    3.增加harden的账户余额

    如上图,可以看出harden的账户显示增加了1000

    但是由于事务的存在,我们再次查看数据库的真实数据,如上右图,还是保持了最初的值。

    4.提交事务

    当我们提交事务之后,数据库的真实记录更新,两个客户端的数据一致。

  • 相关阅读:
    JavaScript 事件对象Event的工具类
    高度组件专一性的松耦合系统CI的MVC
    [转]解决PHP相对目录问题最有效的办法
    CodeIgniter 用户登录注册模块
    记录js的四种函数写法
    Firebug 控制台API
    jQuery实战(一)
    apache:一个ip绑定多个域名的问题(续)
    JavaScript 字符串操作(一)
    hdu 1166 敌兵布阵【树状数组入门】
  • 原文地址:https://www.cnblogs.com/itaylor/p/7862539.html
Copyright © 2011-2022 走看看