思考
- 假设在一个场景中,学工部解散了,需要删除该部门及该部门下的员工
- 对应的SQL语句
- 涉及的数据表信息如下
- 员工表
- 部门表
-
实现的SQL语句
-
-- todo 事务 -- 删除学工部 -- 删除1号部门 delete from tb_dept where id = 1; -- 删除学工部下的员工 delete from tb_emp where dept_id = 1;
-
- 上述代码是正常地完成了数据的删除
- 但是存在问题就是,如果上述的两个操作中只执行成功了一个,那么就破化了数据库中数据一致性原则,解决这一类问题就可以使用数据库中的事务来解决
事务
-
介绍
- 概念:事务是一组操作的集合,是一个不可分割的工作单位。事务会把所有操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
- ps:在默认的MySQL的事务是自动提交的,也就是说,当执行一条SQL语句时,MySQL会立即隐式提交事务。
- 操作
- 开启事务:start transaction;/begin;
- 开启事务
- 提交事务:commit;
- 当所有操作执行成功后,提交事务
- 回滚事务:rollback;
- 操作出现问题,选择回滚事务,撤销已经执行的操作
- 开启事务:start transaction;/begin;