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

    一、 什么是事务
    事务就是一段sql 语句的批处理,但是这个批处理是一个atom(原子) ,不可分割,要么都执行,要么回滚(rollback)都不执行。
    二、为什么出现这种技术
    为什么要使用事务这个技术呢? 现在的很多软件都是多用户,多程序,多线程的,对同一个表可能同时有很多人在用,为保持数据的一致性,所以提出了事务的概念。这样很抽象,举个例子: 
    要划钱,的账户-1000元, 的账户就要+1000元,这两个update 语句必须作为一个整体来执行,不然扣钱了,没有加钱这种情况很难处理(找出原因)。
    三、如何在MYSQL 中使用事务
    1、谁可以使用
    只有InnoDB /BDB 的之类的transaction_safe table 才能支持。
    默认的engine MyISAM 是不支持事务的,show engine 可以看到支持的和默认的engine。可以在[mysqld] 加入: default_storage_engine=InnoDB;  InnoDB 就是建立表的默认引擎
    建立InnoDB :Create table .... type=InnoDB; Alter table table_name type=InnoDB;(如何查看已有表的类型: show create table table_name)
    这样我们就可以在InnoDB 表上进行事务操作了!
    2、如何使用

    上面是很好药引子啊 直接搬过来了  

    接着:
    2、如何使用
    前提:这个要理解这句话哟!!!我们刚学mysql增删改查的时候,按下enter键时候,语句是自动提交的,也就是说mysql默认autocommit=1 

    a、用begin,rollback,commit来实现

    • begin开始一个事务
    • rollback事务回滚
    • commit事务确认

    b、直接用 SET 来改变 MySQL 的自动提交模式:

    • set autocommit=0 禁止自动提交
    • set autocommit=1 开启自动提交



    演示开启事务:
    mysql> CREATE TABLE test ( id int primary key auto_increment ) engine=innodb;
    mysql> insert test values (1);
    mysql> begin;
    mysql> insert test values (2);
    mysql> commit;
    mysql> select * from test;
    //显示 两个记录 1 2 

    mysql> begin;
    mysql> insert test values (3);
    mysql> insert test values (4);
    mysql> rollback; // 上面的两个语句都不会产生影响 被回滚了
    mysql> commit;
    mysql> select * from test;
    //显示 两个记录 1 2 









  • 相关阅读:
    Python socket 通信功能简介
    python2 && python3 的 input函数
    python 监听键盘输入
    std_msgs/String.msg
    python中string、json、bytes的转换
    python json与字典对象互相转换
    maven依赖关系中Scope的作用
    Maven项目下HttpServletRequest 或 HttpServletResponse需引用的依赖包
    Setup SS5 Socks Proxy
    Turn any Linux computer into SOCKS5 proxy in one command
  • 原文地址:https://www.cnblogs.com/mljqqh/p/9694227.html
Copyright © 2011-2022 走看看