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

    事务

    1.什么是事务

    要么都成功,要么都失败

    1. SQL执行, A 给 B 转账 A 1000 ——》200 B200
    2. SQL执行, B 收到 A 的钱 A 800 ——》B400

    核心:将一组SQL放在一个批次中去执行~

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

    1. 原子性(Atomicity):两个步骤一起成功一起失败(-200和+200必须同时发生)
    2. 一致性(Consistency):针对一个事务操作前和操作后的状态一致,最终一致性。(最后总共是1800,操作前后都不会发生变化)
    3. 持久性(Durability):事务结束后的数据不随着外界原因导致数据丢失。(事务没有提交,恢复原状。事务已经提交,持久化到数据库)
    4. 隔离性(Isolation):多个用户同时操作,排除其他事务对本次事务的影响

    2.事务的隔离级别

    脏读:指一个事务读取了另一个事务未提交的数据

    不可重复读:在第一个事务内读取表中的某一行数据,多次读取结果不同。(不一定是错误,可能是场合不对)

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

    -- 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
    USER shop
    CREATE TABLE `account`(
    	`id` INT(9) NOT NULL AUTO_INCREMENT,
    	`name`VARCHAR(30) NOT NULL,
    	`money` DECIMAL(9,2) NOT NULL,
    	PRIMARY KEY(`id`)
    )ENGINE=INNODB DEFAULT CHARSET=utf8
    
    INSERT INTO account(`name`,`money`)
    VALUES('A',2000.00),('B',10000.00)
    
    -- 模拟转账:事务
    SET autocommit = 0; -- 关闭自动提交
    START TRANSACTION -- 开启一个事物
    UPDATE account SET money = money - 500 WHERE `name`='A' -- A减500
    UPDATE account SET money = money + 500 WHERE `name`='B' -- B加500
    
    COMMIT; -- 提交事务
    ROLLBACK; -- 回滚
    
    SET autocommit =1; -- 恢复默认值
    
  • 相关阅读:
    对于delphi 三层的理解
    XE6调用android标准功能
    修复 XE7 Frame 内 PopupMenu 快捷键失效问题 by 龟山阿卍
    最大熵模型 二
    最大熵模型
    算法复习-平面内极大值点
    算法复习-生成全排列
    算法复习-归并排序
    算法复习-快速排序
    连续特征的离散化
  • 原文地址:https://www.cnblogs.com/jev-0987/p/14452350.html
Copyright © 2011-2022 走看看