zoukankan      html  css  js  c++  java
  • 数据库-事务

    """
    支付10
    充值10 失败了
    
    目标:
    深圳-万州
    
    中转方案:
    1.深圳-广州
    2.广州-武汉
    3.武汉-万州
    某一步出错了回滚,回退到原来的状态.
    回滚-->滚回来的意思
    
    事务:transaction
    是一系列的sql语句操作
    保证所有操作完全执行,如果成功一半,完全不执行,什么都不执行.全部执行成功了.
    如果某一步失败了,会将前面成功的操作进行回滚,回到什么都不执行的状态.
    
    原则:要么都执行成功,要么什么也不做
    
    特性:ACID
        A:原子性<atomicity>,不允许成功一半,失败一半的情况  回滚操作保证的
        C:一致性<consistency>,数据库中不存在不一致状态,总是从一个一致性状态切换到另一个一致性状态.
        I:隔离性<Isolation>,事务与事务,事务与外界是相互隔离的,隔离的意思是不可见的.外界不知道事务的状态,除非提交数据之后才能看到结果.
        中间状态外界不可见
        D:持久性<durability 耐久性,坚固,耐用>,一旦把数据提交之后,数据库将会永久保存,一旦提交之后就不允许回滚.但是并不包括硬件的概念.硬件原因导致的数据丢失,
        这种情况并不包括.
        
    两种状态:
        rollback:回滚,回退
        commit:提交
    """
    # --------------------------开启操作/撤销/提交---------------------->
    """
    开启事务:begin;或者 start transaction;
    提交事务:commit;
    回滚事务:rollback;  --> 也叫撤销
    
    开两个终端进行测试验证即可.
    1.>begin;
    
    2.>先在一个终端中A进行了insert,查询可以看到操作效果
    
    3.>在另外一个终端中B却看不到操作效果
    
    4.>重复1-3,然后在A终端中commit;B中也可以看到操作效果
    
    事务只是适用于表数据的增删改.
    
    注意:mysql的命令行中自动开启,自动提交
    
    但是在pymysql模块中编程的时候是自动开启,手动提交<所以需要加commit()操作>
    
    一旦执行了更新表数据的操作的时候会自动开启事务 update/delete/insert
    
    1.>查看是否开启自动提交:
    
    select @@autocommit;
    @@--->系统变量
    
    查看是否自动提交: 1 ---> 开启了自动提交  0 ---> 不是自动提交
    select @@autocommit;
    +--------------+
    | @@autocommit |
    +--------------+
    |            1 |
    +--------------+
    
    set autocommit=0,就关闭了自动提交.就需要我们自己去手动提交.
    """
    # ------------------------------------------注意:----------------------------->
    """
    删除库drop database 库; ,删除表 drop table 表; , alter table等操作是无法进行事务回滚的,事务回滚等操作只支持表中数据的增,删,改
    """
  • 相关阅读:
    c++——类 继承
    Pytorch Tensor, Variable, 自动求导
    Python-OpenCV实现二值图像孔洞填充
    神经网络手写数字识别numpy实现
    神经网络反向传播公式推导
    转:Markdown语法大全
    markdown居中对齐,左对齐,右对齐
    硬编码与软编码
    转:Markdown数学公式语法
    Python if __name__=='__main__'
  • 原文地址:https://www.cnblogs.com/huaibin/p/12100610.html
Copyright © 2011-2022 走看看