- transaction:事务
start transaction
- rollback:回退
commit
commit to 保留点名称` - commit:提交
- savepoint:保留点
set savepoint 保留点名
备注:
- rollback语句只针对删除,更改,插入语句可以回退,针对创建语句,查询语句无作用
- 数据库操作语句会自动提交,若想数据库执行语句不自动提交使用:
set autocommit=0;
- autocommit语句只是针对本次连接,不是针对整个数据库,所以只要断开连接,就可以恢复自动提交
- 可以在mysql中任意设置多的保留点
- 保留点的释放,在事务执行完之后释放,执行一条rollback语句或者commit语句(mysql5.1之后的版本,可以使用release savepoint 保留点名释放)
use crashcourse;--打开crashcourse数据库
strat transaction;--开始事务
delete from orders;--删除orders表的数据
rollback;--事务回退,会将删除的数据恢复
strat transaction;
delete from orderitem where order_num=20010;
delete from orders where order_num=20010;
commit;提交事务
rollback;---commit后再rollback回滚就无效了
strat transaction;
delete from orderitem where order_num=20010;
savepoint detlete1;--设置保留点,
delete from orders where order_num=20010;
rollback to delete1;---保留点前的操作会保留,保留点后的操作语句会回滚,不会执行