MySQL事务的概念

应用场景

    生活中,我们往往经常会进行转账操作,转账操作可以分为两部分来完成,转入和转出。只有这两部分都完成了才可以认为是转账成功。

    数据库中,这个过程是使用两条语句来完成的,如果其中任意一条语句出现了异常没有执行,则会导致两个账号的金额不同步,造成错误。

  为了防止上面可能出现的情况,MySQL引入了事务,所谓事务就是针对数据库的一组操作,它可以由一条或者多条SQL语句组成,同一个事务的操作具备同步的特点,如果其中有一条语句不能执行的话,那么所有的语句都不会执行,也就是说,事务中的语句要么都执行,要么都不执行。

    事务的隔离级别:

    如果多个事务同时操作一批数据会引发一些问题,设置不同隔离级别就可以解决这些问题

    事务存在的问题:

        1,脏读 (读到另一个事务中未提交的数据)

        2,不可重复读(在同一个事务中,两次读到的数据不一样)

         3,幻读(一个事务操作数据库中所有的记录,另一个事务添加了一个数据则第一个失误查询不到自己的修改)

    事务的四大特征

          1,原子性:不可分割,要么同时成功要么同时失败  

          2,持久性当事务提交或回滚后,数据库会持久化的保存数据 

          3,隔离性:多个事务之间相互独立 

          4,一致性:事务操作前后数据总量不变

事务两种提交方式:

        手动提交:要先开启事务再提交(oracle就是手动提交)

        自动提交:mysql就是自动提交

如果一个包含多个步骤的业务操作被事务管理,那么这些操作要么同时成功,要么同时失败    


        1:开启事务:start transaction;

        2.发生异常时回滚:rollback;

        3.提交操作:commit

mysql数据库中事务默认自动提交:一条dml语句自动提交一次

修改事务的默认提交方式:

         1,查看事务的提交方式:select @@autocommit;

         2,修改:set@@autocommit=0,修改为0后不作commit就没有修改成功

你可能感兴趣的:(MySQL事务的概念)