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

要显式地提交事务,则需要使用 COMMIT 语句或者提交按钮(在图形化客户端工具中)。

说明

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

MySQL 模式

MySQL 模式下:

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

    在您提交事务之前:

    • 您的修改只对当前会话可见,对其他数据库会话不可见。

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

    在您提交事务之后:

    • 您的修改对所有数据库会话可见。

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

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

示例如下:

  1. obclient> BEGIN;
  2. Query OK, 0 rows affected (0.00 sec)
  3. obclient> INSERT INTO t_insert(id,name) VALUES(4,'JP');
  4. Query OK, 1 row affected (0.01 sec)
  5. obclient> COMMIT;
  6. Query OK, 0 rows affected (0.00 sec)
  7. obclient> ^Bye
  8. [qing.meiq@h07g12088.sqa.eu95 /home/qing.meiq/bmsql]
  9. $obclient -h192.168.1.101 -utpcc@obbmsql#obdemo -P2883 -p123456 TPCC
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  11. obclient> SELECT * FROM t_insert;
  12. +----+------+-------+---------------------+
  13. | ID | NAME | VALUE | GMT_CREATE |
  14. +----+------+-------+---------------------+
  15. | 1 | CN | 10001 | 2020-04-02 17:52:31 |
  16. | 2 | US | 10002 | 2020-04-02 17:52:38 |
  17. | 3 | EN | 10003 | 2020-04-02 17:52:38 |
  18. | 4 | JP | NULL | 2020-04-02 17:53:34 |
  19. +----+------+-------+---------------------+
  20. 4 rows in set (0.00 sec)

Oracle 模式

Oracle 模式下:

  • 在您提交事务之前:

    • 您的修改只对当前会话可见,对其他数据库会话不可见。

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

  • 在您提交事务之后:

    • 您的修改对所有数据库会话可见。

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

示例如下:

  1. obclient> INSERT INTO t_insert(id,name) VALUES(4,'JP');
  2. Query OK, 1 row affected (0.01 sec)
  3. obclient> COMMIT;
  4. Query OK, 0 rows affected (0.00 sec)
  5. obclient> ^Bye
  6. [qing.meiq@h07g12088.sqa.eu95 /home/qing.meiq/bmsql]
  7. $obclient -h192.168.1.101 -utpcc@obbmsql#obdemo -P2883 -p123456 TPCC
  8. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  9. obclient> SELECT * FROM t_insert;
  10. +----+------+-------+---------------------+
  11. | ID | NAME | VALUE | GMT_CREATE |
  12. +----+------+-------+---------------------+
  13. | 1 | CN | 10001 | 2020-04-02 17:52:31 |
  14. | 2 | US | 10002 | 2020-04-02 17:52:38 |
  15. | 3 | EN | 10003 | 2020-04-02 17:52:38 |
  16. | 4 | JP | NULL | 2020-04-02 17:53:34 |
  17. +----+------+-------+---------------------+
  18. 4 rows in set (0.00 sec)