暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql的事务

测试备忘录 2021-05-31
226

    之前整理了mysql的基础: 数据库常用语句,今天继续学习下mysql的其他内容,事务。

事务

    MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务。

    在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
    事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
    事务用来管理 insert,update,delete 语句

        一般来说,事务是必须满足4个条件(ACID):原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

    MySQL数据隔离级别

      MySQL 里有四个隔离级别:
      Read uncommttied(可以读取未提交数据)
      Read committed(可以读取已提交数据)
      Repeatable read(可重复读)
      Serializable(可串行化)
      • 常见几种数据不同步错误

        • 脏读

          所谓脏读是指一个事务中访问到了另外一个事务未提交的数据,


        • 幻读

          一个事务读取2次,得到的记录条数不一致:


        • 不可重复读

          一个事务读取同一条记录2次,得到的结果不一致:

        在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。
        因此要显式地开启一个事务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

        事务控制语句:

          BEGINSTART TRANSACTION 显式地开启一个事务;


          COMMIT 也可以使用 COMMIT WORK,不过二者是等价的。COMMIT 会提交事务,并使已对数据库进行的所有修改成为永久性的;


          ROLLBACK 也可以使用 ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;


          SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以有多个 SAVEPOINT


          RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;


          ROLLBACK TO identifier 把事务回滚到标记点;


          SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READSERIALIZABLE

          事务处理方式:

            a)用 BEGINROLLBACKCOMMIT来实现
            BEGIN 开始一个事务
            ROLLBACK 事务回滚
            COMMIT 事务确认


            b)直接用 SET 来改变 MySQL 的自动提交模式:
            SET AUTOCOMMIT=0 禁止自动提交
            SET AUTOCOMMIT=1 开启自动提交

            示例:

              mysql> begin;    # 开始事务
              Query OK, 0 rows affected (0.00 sec)

              mysql> insert into runoob_transaction_test values(7);
              Query OK, 1 rows affected (0.00 sec)

              mysql> rollback; # 回滚
              Query OK, 0 rows affected (0.00 sec)

              文章转载自测试备忘录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论