6.1 什么是事务
原子性:要么都成功,要么都失败
---------------------
1、SQL执行 A给B转账 A 800 —>200 B 200
2、SQL执行 B收到A的钱 A 600 —>B 400
---------------------
将一组SQL放在一个批次中去执行~
事务原则:
ACID 原则: 原子性,一致性,隔离性,持久性(脏读,幻读)
原子性:要么都成功,要么都失败
一致性:事务前后的数据完整性要保持一致,无论怎么转,最后的值一定是1000
持久性:事务一旦提交就不可逆,被持续化到数据库中;事务没有提交就恢复到原状,事务已经提交就持续化到数据库
隔离性:事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离;排除其他事务对本次事务的影响
隔离所导致的一些问题:
脏读:指一个事务读取了另外一个事务未提交的数据
不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)
幻读(虚读):在一个事务内读取到了别人的事务插入的数据,导致前后读取不一致(一般是行影响,多了一行)
执行事务:
MySQL是默认开启事务自动提交的
SET autocommit = 0 /* 关闭 */
SET autocommit = 1 /* 开启 */
DECIMAL(9,2)
9位有效数字,小数点后两位