Mysql 事务
一、什么是事务?
一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)
一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成
事务只和DML语句有关,或者说DML语句才有事务
二、为什么需要事务?
因为我们在操作数据的时候,可能遇到多个线程同时操作数据的问题,也可能遇到突然数据库故障了的问题,这些都可能造成数据的不一致。所以事务要保证的就是一致性
三、事务四大特性(ACID)?
1、原子性(A):事务是最小单位,不可再分
2、一致性(C):事务要求所有的DML语句操作的时候,必须保证同时成功或者同时失败
3、隔离性(I):一个事务所做的修改在最终提交以前,对其他事务是不可见的
4、持久性(D):一旦事务提交,则其所做的修改会永久保存到数据库
四、事务的使用?
1、开启:
begin; 或者 start transaction;
2、结束:
End Transaction;
3、提交:
commit; 或者 Commit Transaction;
4、回滚:
rollback; 或者 Rollback Transaction;
五、注意?
1、修改数据的命令会自动的触发事务,包括insert、update、delete
2、在mysql命令行中会自动提交事务
3、当不需要mysql命令行自动提交时 加入set autocommit=0
即可
4、SQL语句中有手动开启事务的原因是:可以进行多次数据的修改,如果成功一起成功,否则一起会滚到之前的数据
5、不可撤销的操作(隐式提交): 除了对表数据insert/update/delete语句之外的绝大多数语句都是不能撤销的,比如数据库、表结构的操作