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; -- 恢复默认值
    
  • 相关阅读:
    LightOJ
    LightOJ
    51Nod 1021~1023 石子合并 (逐步加强版) 【dp】
    BZOJ1036 [ZJOI2008]树的统计Count 【树链剖分+线段树维护】
    51Nod 1677 treecnt 【树形dp+组合数学+逆元】
    逆元 【数学】
    51Nod 1705七星剑 【概率dp】
    BZOJ 1064 [Noi2008]假面舞会 【bfs】
    51 nod 1443 路径和树 【最短路径】
    BZOJ 1013 [JSOI2008]球形空间产生器sphere 【高斯消元】
  • 原文地址:https://www.cnblogs.com/jev-0987/p/14452350.html
Copyright © 2011-2022 走看看