savepoint的使用

Posted by Qiyibaba on March 1, 2022

savepoint

savepoint是作为回退做的,savepoint的个数没有限制,savepoint和虚拟机中快照类似. savepoint是事务中的一点。用于取消部分事务,当结束事务时,会自动的删除该事务中所定义的所有保存点。

基本操作

回退事务的几个重要操作 
1.设置保存点 savepoint a 
2.取消保存点a之后事务 rollback to a 
3.取消全部事务 rollback 

注意:这个回退事务,必须是没有commit前使用的;

举例说明

-- 开启事务
mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into tn values (2);
Query OK, 1 row affected (0.00 sec)

mysql> select * from tn;
+-----------+
| a         |
+-----------+
| 10.010000 |
|  2.000000 |
+-----------+
2 rows in set (0.00 sec)

mysql> savepoint a1;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into tn values (3);
Query OK, 1 row affected (0.00 sec)

mysql> select * from tn;
+-----------+
| a         |
+-----------+
| 10.010000 |
|  2.000000 |
|  3.000000 |
+-----------+
3 rows in set (0.00 sec)

mysql> rollback to a1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from tn;
+-----------+
| a         |
+-----------+
| 10.010000 |
|  2.000000 |
+-----------+
2 rows in set (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from tn;
+-----------+
| a         |
+-----------+
| 10.010000 |
+-----------+
1 row in set (0.00 sec)