80 lines
2.0 KiB
Markdown
80 lines
2.0 KiB
Markdown
提交事务
|
|
=========================
|
|
|
|
|
|
|
|
提交一个事务会让事务的修改持久化生效,清除保存点并释放事务所持有的所有锁。
|
|
|
|
要显式的提交事务,使用 COMMIT 语句或者使用提交按钮(在图形化客户端工具中)。
|
|
**说明**
|
|
|
|
|
|
|
|
OceanBase 会在 DDL 语句前和后隐式的发起一个 COMMIT 语句,这个也会提交事务。
|
|
|
|
* 如果使用 BEGIN 开启一个事务,执行 DML 语句后需要使用 COMMIT 提交事务。
|
|
|
|
在您提交事务之前:
|
|
* 您的修改只对当前会话可见,对其他数据库会话是不可见的。
|
|
|
|
|
|
|
|
* 您的修改没有持久化,所以不是最终的,可以用 ROLLBACK 语句回滚这些修改。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在您提交事务之后:
|
|
* 您的修改对所有数据库会话可见。
|
|
|
|
|
|
|
|
* 您的修改持久化成功,不可以用 ROLLBACK 语句回滚这些修改。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 如果不显示地使用 BEGIN 开启事务,则一条 SQL 就是一个事务,不再需要提交事务。SQL 执行后您的修改即持久化成功,不可以用 ROLLBACK 语句回滚这些修改。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
示例:提交事务
|
|
----------------
|
|
|
|
```javascript
|
|
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)
|
|
```
|
|
|
|
|