zoukankan      html  css  js  c++  java
  • Mysql-事务,原子性操作

    事物分为 自动(默认的)和手动(需开启事务)两种

    --
    事务 start transaction; -- commite; 提交事务 -- rollback; 回滚事务
    create table if not exists account(
        id int primary key auto_increment,
        name varchar(14) not null,
        RMB int
    );
    
    insert into account(name,RMB) values('Which',1000),('Tj',998);

    rollback; 进行一步操作后,可以撤回这个操作

    -- 开始事务    手动事物

    start transaction;

    -- 事物操作
    update account set RMB =RMB-992 where name = 'Which';
    -- q  退出mysql(中断事务)
    -- mysql -u name -p;  回到mysql   
    -- 继续事务操作
        -- 回滚事务
        rollback;
    +----+-------+------+   -- insert
    | id | name  | RMB  |
    +----+-------+------+
    |  1 | Which |    8 |
    |  2 | Tj    |  998 |
    +----+-------+------+ 
    -- update  |
    --+-------+------+
    | id | name  | RMB  |
    +----+-------+------+
    |  1 | Which |    8 |
    |  2 | Tj    |  998 |
    +----+-------+------+
    -- rollback | +----+-------+------+ | id | name | RMB | +----+-------+------+ | 1 | Which | 8 | | 2 | Tj | 998 | +----+-------+------+

    commite:   自动提交

    -- 事物操作
    update account set RMB =RMB-992 where name = 'Which';
    -- q  退出mysql(事务)
    -- mysql -u name -p;  回到mysql
    -- 实际上在这儿退出后,再回到account表,值并没有-992,但是再进行下一步操作后,992就转给Tj了。
     -- 继续事务操作 update account set RMB =RMB+992 where name = 'Tj';
    -- insert   Which 1000,Tj 998
    +----+-------+------+
    | id | name  | RMB  |
    +----+-------+------+
    |  1 | Which | 1000 |
    |  2 | Tj    |  998 |
    +----+-------+------+
    -- update   Which-992
    +----+-------+------+
    | id | name  | RMB  |
    +----+-------+------+
    |  1 | Which |    8 |
    |  2 | Tj    |  998 |
    +----+-------+------+
    -- update   Tj+992
    +----+-------+------+
    | id | name  | RMB  |
    +----+-------+------+
    |  1 | Which |    8    |
    |  2 | Tj       | 1990  |
    +----+-------+------+

    原子性操作:Innodb引擎支持事务

    要么全部成功,要么全部失败 

  • 相关阅读:
    水题大战Vol.3 B. DP搬运工2
    火题小战 C. 情侣?给我烧了!
    火题小战 B. barbeque
    火题小战 A.玩个球
    P6087 [JSOI2015]送礼物 01分数规划+单调队列+ST表
    NOI2020D1T1美食家
    Java 的随机数
    MySQL 配置文件的配置
    NOIP2020准(ge)备(zi)日记
    android开发EditText禁止输入中文密码的解决方法
  • 原文地址:https://www.cnblogs.com/tangpg/p/8125313.html
Copyright © 2011-2022 走看看