• 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引擎支持事务

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

  • 相关阅读:
    Jquery清除style样式
    合并单元格式
    SQL根据下标,返回split分割后字符串
    js功能比较全面的yyyyMMdd格式的日期验证正则
    DataTable to Json
    List<T>下的Find,FindAll等条件过滤函数的使用方法
    获取iframe内部DOM对象
    PowerDesigner取消Name与Code同步
    再次回归
    最近遇到一个比较有意思的题目
  • 原文地址:https://www.cnblogs.com/tangpg/p/8125313.html
Copyright © 2020-2023  润新知