MySQL数据库中的事务
事务:
- 当一个业务需要多个操作步骤(insert ino | update | delete from)时,只有所有步骤都完成才算完成,如果其中某条sql语句出错,则整个操作都退回。
- 使用事务可以完成退回的功能,从而保证业务逻辑的正确性。
- 事务的本质是:上锁
事务的四大特性(简称ACID):
- 原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行
- 一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致
- 隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的
- 持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障
能够使用事务的前提条件:
- 表的类型必须是innodb或bdb类型
如何修改表的类型?
- 第一步:查看表的创建语句
show create table 表名;
- 第二步:修改表名
alter table 表名 engine=innodb;
事务操作步骤:
- begein:开启事务,并在内存级临时表中进行增、删、改等操作
- commit:将临时表中的数据更新到原表中,确认更改,释放锁
- rollback:放弃begin后面的所有操作,释放锁
commit和rollback只能2选1
练习:
begin;
update stus set sname = '张三' where id = 1;
delete from stus where sname = '李四';
commit;或者rollback;