MySQL事务保存点

当你在数据库插入大量语句后,突然其中一句报错,rollback大量数据的效率极低,如何解决?

一:我们在这里提出一个事务“保存点”的概念

那什么是保存点?粗略来讲相当于Java中的“断点”,设置一个断点,当你在数据库中插入一条数据后,在这条语句后面设置一个savepoint,当你需要rollback的时候,只需要回滚到这个savepoint点时就可以,这样就节省了大量的时间,提高的工作效率,也不需要消耗数据库的资源。

二:代码演示

我的数据库表有cid cname pif 三个属性,用sql语句插入

  1. 首先开启事务
START TRANSACTION;
INSERT into city VALUES(NULL,"武汉市","7");

插入成功后,我们在这设置一个保存点a

SAVEPOINT a;
INSERT into city VALUES(NULL,"北京市","8");

插入成功后,我们在这设置一个保存点b

SAVEPOINT b;
INSERT into city VALUES("南京市","9");

这边sql语句出现错误

INSERT into city VALUES("南京市","9")
> 1136 - Column count doesn't match value count at row 1
> 时间: 0s

5.这边我们用保存点进行回滚

rollback to SAVEPOINT a;

回滚到a成功

rollback to SAVEPOINT a
> OK
> 时间: 0s

在插入大量数据中间发生错误需要回滚,就可以利用保存点的方法来有效的解决此类问题,希望对你们有帮助!

你可能感兴趣的:(笔记,mysql,java)