怎么让MySQL的事务回滚部分SQL
一直以为对MySQL事务理解就停留在ACID,没有想到事务里还可以回滚某个位置。类似git的回滚到某个commitId的感觉。
如果你开启了一个事务,执行了很多语句,忽然发现某条语句有点问题,你只好使用ROLLBACK语句来让数据库状态恢复到事务执行之前的样子,然后一切从头再来,但是可能根据业务和数据的变化,不需要全部回滚。所以MySQL里提出了一个保存点(英文:savepoint)的概念,就是在事务对应的数据库语句中打几个点,我们在调用ROLLBACK语句时可以指定会滚到哪个点,而不是回到最初的原点。定义保存点的语法如下:
SAVEPOINT 保存点名称;
当我们想回滚到某个保存点时,可以使用下边这个语句(下边语句中的单词WORK和SAVEPOINT是可有可无的):
ROLLBACK TO [SAVEPOINT] 保存点名称;
不过如果ROLLBACK语句后边不跟随保存点名称的话,会直接回滚到事务执行之前的状态。
如果我们想删除某个保存点,可以使用这个语句:
RELEASE SAVEPOINT 保存点名称;



相关推荐
-
如何高效实现elasticsearch和mysql 的数据同步
如何高效实现elasticsearch和mysql 的数据同步2025-04-29 01:57:31 -
记录日常学习——PHP之运算符2025-04-29 01:26:52
-
NGINX快速入门 Nginx性能参数调优2025-04-29 00:35:34
-
MySQL如何实现双机热备份2025-04-29 00:22:37
-
自行颁布ssh证书,实现nginx支持HTTPS2025-04-29 00:18:08