zoukankan      html  css  js  c++  java
  • MySQL-事务

    1.为什么使用事务?
    软件是多用户,多程序,对线程,对同一个表可能同时有很多人在用,
    为保持数据的一致性。
    数据库事务transanction正确执行的四个基本要素。ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。
    原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
    一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
    隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。
    持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

    原子性:一个事务是一个不可分割的工作单位,事务中包括的操作要么做,要么不做。
    一致性:事务必须是使数据库从一个一致性状态变成另一个一致性状态。
    隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能相互干扰。
    持久性:持久性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

    2.什么存储类型支持事务
    a.查看数据库是否支持事务(InnoDB)?
     show enginesG;
    b.查看MySQL当前默认的存储引擎?
    show variables like '%storage_engine%';
    c.查看表的存储引擎?
    show create table 表名;
    d.对于表的存储结构修改?
    alter table account engine = InnoDB;
    3.设置事务步骤
    set autocommit=0;
    start transactions;
    update account set accmoney=accmoney-1000 where aid=1;
    update account set accmoney=accmoney+1000 where aid=2;
    commit;

    CREATE TABLE account (
    aid int(11) NOT NULL,
    accname varchar(20) NOT NULL,
    accmoney decimal(10,2) NOT NULL,
    PRIMARY KEY (aid)
    )ENGINE=InnoDB DEFAULT CHARSET=gbk;

    4.事务的回滚
    回到事务发生之前的数据状态。通过rollback。
    rollback 回滚到上次数据状态。
    commit and chain:表示提交事务之后重新开启了新的事务。
    rollback and release:表示事务回滚之后断开和客户端的连接。

    5.还原点
    savepoint s1;
    savepoint s2;
    savepoint s3;
    rollback to savepoint s1;

    6.相关点
    lock table account write;写锁
    start transaction 在InnoDB中会造成一个隐含的unlock tables执行。

  • 相关阅读:
    江西师范大学瑶湖校区图片
    什么是sp?
    教育技术学硕士点学校排名
    西南师大教育技术学专业2005年入学考试信息
    什么是"工包"?
    买书网址
    2006年全国教育技术学专业新增硕士点
    今天终于拿到书了
    2007年教育学专业基础综合考试大纲(重要部分) ——下载地址
    电脑DIY推荐
  • 原文地址:https://www.cnblogs.com/3ddan/p/10361699.html
Copyright © 2011-2022 走看看