事务简单操作
1.介绍
事务是数据库中的概念: 它是将一组SQL操作关联在一起,它们要么全部执行,要么全部不执行。
当不考虑事务的问题时,可能会发生以下的问题:
- 脏读 (Tom先做了转出,然后在程序开始执行给Jerry进行增加时,Tom反悔了,撤销了转出,但程序已经开始对Jerry进行增加金额,程序实际是读取了提交前的数据,造成了脏读)
- 不可重复读(在Tom转出前读取一次,在Tom转出后Jerry收到前比如查询余额再读一次,两次结果不一样,造成不可重复读)
- 虚读/幻读(涉及到数据的增删,表格结构发生变化)
2.解决方法
可以使用事务的隔离级别来控制,一共有以下四种级别:
- 【最低】读未提交 read uncommitted: 面临 脏读 、不可重复读 、虚读/幻读
- 读已提交 read committed:面临 不可重复读 、虚读/幻读
- 可重复读 reapeatable read :面临 虚读/幻读
- 【最高】串行化 serilaziable:所有问题都解决。
针对隔离界别: 不同的数据库有不同的默认值,且我们开发中一般使用默认值即可。 - MySQL : 默认隔离级别是
可重复读</