104 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 回滚事务 
 | |
| =========================
 | |
| 
 | |
| 
 | |
| 
 | |
| 回滚一个事务指将事务的修改全部撤销。可以回滚当前整个未提交事务,也可以回滚到事务中任意一个保存点。如果要回滚到某个保存点,必须结合使用 ROLLBACK 和 TO SAVEPOINT 语句。
 | |
| 
 | |
| 如果回滚整个事务:
 | |
| 
 | |
| * 事务会结束。
 | |
| 
 | |
|   
 | |
| 
 | |
| * 所有的修改会被丢弃。
 | |
| 
 | |
|   
 | |
| 
 | |
| * 清除所有保存点。
 | |
| 
 | |
|   
 | |
| 
 | |
| * 释放事务持有的所有锁。
 | |
| 
 | |
|   
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 如果回滚到某个保存点:
 | |
| 
 | |
| * 事务不会结束。
 | |
| 
 | |
|   
 | |
| 
 | |
| * 保存点之前的修改被保留,保存点之后的修改被丢弃。
 | |
| 
 | |
|   
 | |
| 
 | |
| * 清除保存点之后的保存点(不包括保存点自身)。
 | |
| 
 | |
|   
 | |
| 
 | |
| * 释放保存点之后事务持有的所有锁。
 | |
| 
 | |
|   
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 示例:ROLLBACK 回滚事务的全部修改 
 | |
| ------------------------------
 | |
| 
 | |
| ```javascript
 | |
| obclient> select * from t_insert;
 | |
| +----+------+-------+---------------------+
 | |
| | ID | NAME | VALUE | GMT_CREATE          |
 | |
| +----+------+-------+---------------------+
 | |
| |  1 | CN   | 10001 | 2020-04-02 17:52:31 |
 | |
| |  2 | US   | 10002 | 2020-04-02 17:52:38 |
 | |
| |  3 | EN   | 10003 | 2020-04-02 17:52:38 |
 | |
| +----+------+-------+---------------------+
 | |
| 3 rows in set (0.00 sec)
 | |
| 
 | |
| obclient> begin;
 | |
| Query OK, 0 rows affected (0.00 sec)
 | |
| 
 | |
| obclient> insert into t_insert(id, name, value) values(4,'JP',10004);
 | |
| Query OK, 1 row affected (0.00 sec)
 | |
| 
 | |
| obclient> insert into t_insert(id, name, value) values(5,'FR',10005),(6,'RU',10006);
 | |
| Query OK, 2 rows affected (0.00 sec)
 | |
| Records: 2  Duplicates: 0  Warnings: 0
 | |
| 
 | |
| obclient> select * from t_insert;
 | |
| +----+------+-------+---------------------+
 | |
| | ID | NAME | VALUE | GMT_CREATE          |
 | |
| +----+------+-------+---------------------+
 | |
| |  1 | CN   | 10001 | 2020-04-02 17:52:31 |
 | |
| |  2 | US   | 10002 | 2020-04-02 17:52:38 |
 | |
| |  3 | EN   | 10003 | 2020-04-02 17:52:38 |
 | |
| |  4 | JP   |  NULL | 2020-04-02 17:53:34 |
 | |
| |  5 | FR   | 10005 | 2020-04-02 17:54:53 |
 | |
| |  6 | RU   | 10006 | 2020-04-02 17:54:53 |
 | |
| +----+------+-------+---------------------+
 | |
| 6 rows in set (0.00 sec)
 | |
| 
 | |
| obclient> rollback;
 | |
| Query OK, 0 rows affected (0.00 sec)
 | |
| 
 | |
| obclient> select * from t_insert;
 | |
| +----+------+-------+---------------------+
 | |
| | ID | NAME | VALUE | GMT_CREATE          |
 | |
| +----+------+-------+---------------------+
 | |
| |  1 | CN   | 10001 | 2020-04-02 17:52:31 |
 | |
| |  2 | US   | 10002 | 2020-04-02 17:52:38 |
 | |
| |  3 | EN   | 10003 | 2020-04-02 17:52:38 |
 | |
| +----+------+-------+---------------------+
 | |
| 3 rows in set (0.00 sec)
 | |
| ```
 | |
| 
 | |
| 
 | 
