zoukankan      html  css  js  c++  java
  • MySql 事务 (6)

    要么都成功,要么都失败

    将一组sql放在一个批次中去执行

    事务 :ACID原则 原子性,一致性,隔离性,持久性 (脏读,幻读...)

    原子性(Atomicity,或称不可分割性)

    要么都成功,要么都失败

    一致性(Consistency)

    事务前后的数据完整性要保证一致 1000

    隔离性(Isolation)

    *与原子性、持久性侧重于研究事务本身不同,隔离性研究的是不同事务之间的相互影响。*隔离性是指,事务内部的操作与其他事务是隔离的,并发执行的各个事务之间不能互相干扰。严格的隔离性,对应了事务隔离级别中的Serializable (可串行化),但实际应用中出于性能方面的考虑很少会使用可串行化。

    持久性(Durability)

    事务一旦提交则不可逆,被持久化到数据库中!

    隔离所导致的一些问题

    脏读

    指一个事务读取另外一个事务未提交的数据。

    不可重复读:

    在一个事务内读取表中的某一行数据,多次读取结果不同。(不一定是错误,只是场景不对)

    虚读(幻读)

    是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

    -- mysql是默认开启事务自动提交的
    SET autocommit = 0 -- 关闭
    SET autocommit = 1 -- 开启(默认)

    -- 手动处理事务
    SET autocommit = 0 -- 关闭

    -- 事务开启
    START TRANSACTION -- 标记一个事务的开始,从这个之后的sql都在同一个事务内

    INSERT xx
    INSERT xx

    -- 提交:持久化(成功!)
    commit
    -- 回滚:回到原来的状态(失败!)
    rollback

    -- 事务的结束
    set autocommit = 1 -- 开启自动提交

    --了解
    SAVEPOINT 保存点名; -- 设置一个事务的保存点
    ROLLBACK TO SAVEPOINT 保存点名; -- 回滚到保存点
    RELEASE SAVEPOINT 保存点名; -- 撤销保存点

     

    模拟事务

    -- 转账
    create database shop CHARACTER SET utf8 COLLATE utf8_general_ci;
    USE shop;

    create table `accont`(
    `id` int(11) not null auto_increment commit '学号',
    `name` varchar(255) not null commit '名字',
    `money` DECIMAL(9,2) not null commit '金钱',
    primary key (`id`)
    )ENGING=INNODB DEFAULT CHARSET=utf8;

    insert into accont (name,money) values ('a',100),('b',100);

    -- 模拟转账 事务
    SET autocommit = 0 -- 关闭
    START TRANSACTION -- 开启一组事务

    update accont set money=money-50 where name = 'a'; -- a减50
    update accont set money=money+50 where name = 'b'; -- b加50

    COMMIT; -- 提交事务,被持久化!
    ROLLBACK; -- 回滚,恢复事务

    set autocommit = 1 -- 开启自动提交

     

  • 相关阅读:
    一种字段串的拆分
    获取存储过程返回值的几种方式
    使用表值参数(数据库引擎)
    转 Dynamics CRM Alert and Notification JavaScript Methods
    CRM 2016 自定义对话框
    CRM 2016 子表单中N:1关系 字段要求与新建时的关系
    恢复CRM plugin
    CRM Diagnostics CRM 2016 诊断
    [Windows] Visual Studio 2010 快捷键大全
    [Java] Web开发HTTP状态码整理
  • 原文地址:https://www.cnblogs.com/yhc-love-cl/p/13561397.html
Copyright © 2011-2022 走看看