简介


不可分割的操作,每个sql语句都是一个事务,事务只对DML有效,对DQL无效

使用


  1. 开启事务

    1. start transaction;
  2. 执行操作

    1. update zs_account set money=money-2000;
    2. update ls_account set money=money+2000;

    此时数据库的数据没有发生变化,这是因为数据库的隔离等级较高

  3. 回滚,撤销刚刚的全部的update操作

    1. rollback;
  4. 提交

    1. commit;

    完成事务操作,数据库数据完成修改

    并发


通常由数据库的隔离级别造成的数据库数据读取时候出现的问题

  1. 脏读
  2. 不可重复读 :一个事务范围内俩次查询返回了不同数据,这就是不可重复读
  3. 重复读
  4. 幻读

对应关系

隔离级别 脏读 不可重复读 幻读
read uncommitted
read committed
repeatable read
serializable

隔离级别


  1. read uncommitted 可以读取未提交的数据
  2. read committed 等待提交后才可以读取到数据
  3. repeatable read
  4. serializable