codecamp

OceanBase TRANSACTION

描述

该语句用于开启事务。

数据库事务(Database Transaction)是指作为单个逻辑工作单元执行的一系列操作。事务处理可以用来维护数据库的完整性,保证成批的SQL操作全部执行或全部不执行。

显示事务是用户自定义或用户指定的事务。通过 BEGIN TRANSACTION,或 BEGIN 和 BEGIN WORK(被作为START TRANSACTION的别名受到支持)语句显示开始,以 COMMIT 或 ROLLBACK 语句显示结束。

格式

transaction_stmt:
      START TRANSACTION [READ ONLY | READ WRITE];
    | BEGIN [WORK];
    | COMMIT [WORK];
    | ROLLBACK [WORK];
    | SET TRANSACTION {READ ONLY | READ WRITE};

参数解释

参数

描述

START TRANSACTION [READ ONLY | READ WRITE]

开启事务语句。一旦开启事务,则随后的 SQL 数据操作语句(即INSERT、UPDATE、DELETE等)直到显式提交时才会生效。

READ ONLY 子句表示事务是只读方式开启,事务内不允许执行修改操作。

READ WRITE 子句表示事务是读写方式开启,默认就是此种模式。

BEGIN

BEGIN 和 BEGIN WORK 被作为 START TRANSACTION 的别名受到支持

COMMIT

提交当前事务。

ROLLBACK

回滚当前事务。

SET TRANSACTION {READ ONLY | READ WRITE}

将当前事务设置成 READ ONLY 或者 READ WRITE 模式。

示例

假设现有表 a 如下所示。

id

name

num

sell_date

1

a

100

2013-06-21 10:06:43

2

b

200

2013-06-21 13:07:21

3

a

50

2013-06-21 13:08:15

  1. 依次执行以下命令开始执行事务,将 id 为 3 的的 name 改为 c,并插入一行当前卖出 a 的记录。
  2. OceanBase(admin@test)> START TRANSACTION;
    Query OK, 0 rows affected (0.00 sec)
    
    OceanBase(admin@test)> UPDATE a SET name = 'c' WHERE id = 3;
    Query OK, 1 rows affected (0.00 sec)
    
    OceanBase(admin@test)> INSERT INTO a VALUES (4, 'a', 30, '2013-06-21 16:09:13');
    Query OK, 1 rows affected (0.00 sec)
    
    OceanBase(admin@test)> COMMIT;
    Query OK, 0 rows affected (0.00 sec)
  3. 事务提交后,执行命令查看表 a 信息。
  4. SELECT * FROM a;

    结果如下:

    id

    name

    num

    sell_date

    1

    a

    100

    2013-06-21 10:06:43

    2

    b

    200

    2013-06-21 13:07:21

    3

    c

    50

    2013-06-21 13:08:15

    4

    a

    30

    2013-06-21 16:09:13

    注意 
    在事务还没有 COMMIT 之前,您可以查看下本事务中的操作是否已经生效,比如可以在 COMMIT 前,加一句“SELECT * FROM a;"。本事务 session 的访问能读到最新的结果,本事务 session 之外的访问结果肯定是没有生效,在事务还没有 COMMIT 前,你之前做的操作除当前事务连接之外都是不可见的。如果您想回滚该事务,直接用“ROOLBACK”代替“COMMIT”。


OceanBase SHOW RECYCLEBIN
OceanBase TRUNCATE TABLE
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }