提交事务 
=========================

提交一个事务会让事务的修改持久化生效，清除保存点并释放事务所持有的所有锁。

要显式地提交事务，则需要使用 `COMMIT` 语句。
**说明**



OceanBase 数据库会在 DDL 语句前和后隐式的发起一个 `COMMIT` 语句，这个也会提交事务。

MySQL 模式 
-----------------------------

MySQL 模式下：

* 如果使用 `BEGIN` 开启一个事务，执行 DML 语句后需要使用 `COMMIT` 提交事务。

  在您提交事务之前：
  * 您的修改只对当前会话可见，对其他数据库会话不可见。

    
  
  * 您的修改没有持久化，所以不是最终的修改，可以使用 `ROLLBACK` 语句回滚这些修改。

    
  

  

  在您提交事务之后：
  * 您的修改对所有数据库会话可见。

    
  
  * 您的修改持久化成功，不可以使用 `ROLLBACK` 语句回滚这些修改。

    
  

  

* 如果不使用 `BEGIN` 开启事务，则一条 SQL 就是一个事务，不再需要提交事务。SQL 执行后您的修改即持久化成功，不可以使用 `ROLLBACK` 语句回滚这些修改。

  




示例如下：

```sql
obclient> BEGIN;
Query OK, 0 rows affected (0.00 sec)

obclient> INSERT INTO t_insert(id,name) VALUES(4,'JP');
Query OK, 1 row affected (0.01 sec)

obclient> COMMIT;
Query OK, 0 rows affected (0.00 sec)

obclient> ^Bye

[qing.meiq@h07g12088.sqa.eu95 /home/qing.meiq/bmsql]
$obclient -h192.168.1.101 -utpcc@obbmsql#obdemo -P2883 -p123456  TPCC
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

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 |
+----+------+-------+---------------------+
4 rows in set (0.00 sec)
```


