OceanBase TRANSACTION

2021-06-11 17:44 更新

描述

該語句用于開啟事務(wù)。

數(shù)據(jù)庫事務(wù)(Database Transaction)是指作為單個(gè)邏輯工作單元執(zhí)行的一系列操作。事務(wù)處理可以用來維護(hù)數(shù)據(jù)庫的完整性,保證成批的SQL操作全部執(zhí)行或全部不執(zhí)行。

顯示事務(wù)是用戶自定義或用戶指定的事務(wù)。通過 BEGIN TRANSACTION,或 BEGIN 和 BEGIN WORK(被作為START TRANSACTION的別名受到支持)語句顯示開始,以 COMMIT 或 ROLLBACK 語句顯示結(jié)束。

格式

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

參數(shù)解釋

參數(shù)

描述

START TRANSACTION [READ ONLY | READ WRITE]

開啟事務(wù)語句。一旦開啟事務(wù),則隨后的 SQL 數(shù)據(jù)操作語句(即INSERT、UPDATE、DELETE等)直到顯式提交時(shí)才會(huì)生效。

READ ONLY 子句表示事務(wù)是只讀方式開啟,事務(wù)內(nèi)不允許執(zhí)行修改操作。

READ WRITE 子句表示事務(wù)是讀寫方式開啟,默認(rèn)就是此種模式。

BEGIN

BEGIN 和 BEGIN WORK 被作為 START TRANSACTION 的別名受到支持

COMMIT

提交當(dāng)前事務(wù)。

ROLLBACK

回滾當(dāng)前事務(wù)。

SET TRANSACTION {READ ONLY | READ WRITE}

將當(dāng)前事務(wù)設(shè)置成 READ ONLY 或者 READ WRITE 模式。

示例

假設(shè)現(xiàn)有表 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. 依次執(zhí)行以下命令開始執(zhí)行事務(wù),將 id 為 3 的的 name 改為 c,并插入一行當(dāng)前賣出 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. 事務(wù)提交后,執(zhí)行命令查看表 a 信息。
  4. SELECT * FROM a;

    結(jié)果如下:

    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

    注意 
    在事務(wù)還沒有 COMMIT 之前,您可以查看下本事務(wù)中的操作是否已經(jīng)生效,比如可以在 COMMIT 前,加一句“SELECT * FROM a;"。本事務(wù) session 的訪問能讀到最新的結(jié)果,本事務(wù) session 之外的訪問結(jié)果肯定是沒有生效,在事務(wù)還沒有 COMMIT 前,你之前做的操作除當(dāng)前事務(wù)連接之外都是不可見的。如果您想回滾該事務(wù),直接用“ROOLBACK”代替“COMMIT”。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)