• mysql事务


     1.什么是事务?

      事务是最小的不可分割的单元,事务能够保证一个业务的完整性

      多条SQL语句会有同时成功或同时失败的要求

    2.mysql如何控制事务?

      mysql默认是开启事务的(自动提交)

    mysql> select @@autocommit;
    +--------------+
    | @@autocommit |
    +--------------+
    |            1 |
    +--------------+
    1 row in set (0.00 sec)

    默认事务开启的作用是什么?

      当我们去执行一条SQL语句时,效果会马上提现出来,且不能回滚

      事务回滚即撤销SQL语句执行的效果

    3.如何让事务能够回滚?

      通过设置自动提交为FALSE的方法来实现,运用roll back进行回滚

     set autocommit=0;
    mysql> insert into person values(4,'章华',7);
    Query OK, 1 row affected (0.02 sec)
    
    mysql> select * from person;
    +------+------+--------+
    | id   | name | cardid |
    +------+------+--------+
    |    1 | 张三 |      1 |
    |    2 | 李四 |      3 |
    |    3 | 王五 |      6 |
    |    4 | 章华 |      7 |
    +------+------+--------+
    4 rows in set (0.00 sec)
    
    mysql> rollback;
    Query OK, 0 rows affected (0.07 sec)
    
    mysql> select * from person;
    +------+------+--------+
    | id   | name | cardid |
    +------+------+--------+
    |    1 | 张三 |      1 |
    |    2 | 李四 |      3 |
    |    3 | 王五 |      6 |
    +------+------+--------+
    3 rows in set (0.00 sec)
    再次提交数据
    mysql> insert into person values(4,'章华',7);
    Query OK, 1 row affected (0.01 sec)
    手动提交
    mysql> commit;
    Query OK, 0 rows affected (0.01 sec)
    进行回滚
    mysql> rollback;
    Query OK, 0 rows affected (0.00 sec)
    数据具有持久性,一旦提交就不能再进行回滚
    mysql> select * from person;
    +------+------+--------+
    | id   | name | cardid |
    +------+------+--------+
    |    1 | 张三 |      1 |
    |    2 | 李四 |      3 |
    |    3 | 王五 |      6 |
    |    4 | 章华 |      7 |
    +------+------+--------+
    4 rows in set (0.00 sec)

    4.当事务开启自动提交时,可以使用begin或者 start transaction来进行手动开启事务

    开启自动提交功能
    mysql> set autocommit=1; Query OK, 0 rows affected (0.00 sec)
    查询事务提交的状态 mysql
    > select @@autocommit; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+ 1 row in set (0.00 sec)
    开始手动提交
    mysql> start transaction; Query OK, 0 rows affected (0.00 sec) 插入提条数据 mysql> insert into person values (9,'六六',8); Query OK, 1 row affected (0.06 sec) mysql> select * from person; +------+------+--------+ | id | name | cardid | +------+------+--------+ | 1 | 张三 | 1 | | 2 | 李四 | 3 | | 3 | 王五 | 6 | | 4 | 章华 | 7 | | 9 | 六六 | 8 | +------+------+--------+ 5 rows in set (0.00 sec) 进行回滚 mysql> rollback; Query OK, 0 rows affected (0.01 sec) mysql> select * from person; +------+------+--------+ | id | name | cardid | +------+------+--------+ | 1 | 张三 | 1 | | 2 | 李四 | 3 | | 3 | 王五 | 6 | | 4 | 章华 | 7 | +------+------+--------+ 4 rows in set (0.00 sec)

    事务的四大特性

      A原子性:事务是最小的单元,不可以再进行分割

      C一致性:同一事务中的SQL语句,必须保证同时成功或同时失败

      I隔离性:事务1和事务2之间具有隔离性

      D持久性:事务一旦结束,就不可以再进行回滚

    事务手动提交的三种方式

      1.修改默认提交:set autocommit=0;

      2.使用begin;

      3.使用start transaction;

    事务手动提交:commit;

    事务手动回归:collback;

    事务的隔离性

  • 相关阅读:
    mount挂载命令
    centos和redhat的区别
    查不认识字的方法
    Prometheus介绍及docker安装方式
    Pinpoint介绍及docker安装方式
    虚拟机安装linux
    yum命令
    docker命令
    PTA数据结构与算法题目集(中文) 7-43字符串关键字的散列映射 (25 分)
    PTA数据结构与算法题目集(中文) 7-42整型关键字的散列映射 (25 分)
  • 原文地址:https://www.cnblogs.com/jingdenghuakai/p/11650537.html
Copyright © 2020-2023  润新知