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)