简介


不可分割的操作,每个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