3. 事务
# 1. 事务
# 1.1 事务:一个事务就是完成某一个操作的一组sql语句的集合。
# 1.2 mysql早期的存储引擎使用的是myisam,他是一个不支持事务的存储引擎
# mysql把存储引擎换为了innerdb,他是支持事务处理的存储引擎。
# 1.3 事务特点:定义在一个事务中的一组sql语句要么都生效,要么都不生效,
# 可以保证某一个操作的数据的安全性。
# 1.4 注意:之前写的所有的每一条sql语句都是有事务控制的。
# 只有需要保证一个操作的很多条sql语句的安全性的时候,才需要显示的添加事务。
# 1.5 添加事务:start transaction; 注意:事务需要提交,通过commit提交
# 1.6 回滚事务:rollback;
# 1.7 事务特性(ACID):
# 原子性:一个事务中的sql不能拆分
# 一致性:事务执行之前和执行之后总状态保持不变
# 隔离性:事务与事务之间互不影响
# 持久性:事务执行之后的结果要永久保存在数据库中
# jim给tom转1000块钱
#(如果jim的账户减过以后,系统出了问题,tom的账户就不会加上。则数据不安全)
update bank set money=money-1000 where name='jim';
drop table xx;
update bank set money=money+1000 where name='tom';
# jim给tom转1000块钱 (添加事务控制,假定成功,需要提交)
start transaction; # 开启事务
update bank set money=money-1000 where name='jim';
update bank set money=money+1000 where name='tom';
commit; # 提交事务,就是把sql在内存中执行的结果,持久化到数据库中
# jim给tom转1000块钱 (添加事务控制,假定中间某一步报错,需要回滚事务)
start transaction; # 开启事务
update bank set money=money-1000 where name='jim';
update bank set money=money+1000 where name='tom';
rollback; # 回滚事务,就是把已经进行的操作重置到事务开始之前的状态