Oracle SET TRANSACTION語(yǔ)句(設(shè)置事務(wù))

2022-03-09 17:33 更新

在 Oracle 中,SET TRANSACTION 語(yǔ)句可以用來(lái)設(shè)置事務(wù)的各種狀態(tài),比如只讀、讀/寫(xiě)、隔離級(jí)別,為事務(wù)分配名稱(chēng)或?qū)⑹聞?wù)分配回滾段等等。本教程要為大家?guī)?lái)的就是 SET TRANSACTION 語(yǔ)句的語(yǔ)法以及示例,教大家如何正確使用該語(yǔ)句。

SET TRANSACTION語(yǔ)法

Oracle中SET TRANSACTION語(yǔ)句的語(yǔ)法是:

SET TRANSACTION [ READ ONLY | READ WRITE ]
                [ ISOLATION LEVEL [ SERIALIZE | READ COMMITED ]
                [ USE ROLLBACK SEGMENT 'segment_name' ]
                [ NAME 'transaction_name' ];

參考

   ● READ ONLY:可以將事務(wù)設(shè)置為只讀事務(wù)。

   ● READ WRITE:可以將事務(wù)設(shè)置為讀/寫(xiě)事務(wù)。

   ● ISOLATION LEVEL: 如果指定,它有兩個(gè)選項(xiàng):

        1.ISOLATION LEVEL SERIALIZE:如果事務(wù)嘗試更新由另一個(gè)事務(wù)更新并未提交的資源,則事務(wù)將失敗。

        2.ISOLATION LEVEL READ COMMITTED:如果事務(wù)需要另一個(gè)事務(wù)持有的行鎖,則事務(wù)將等待,直到行鎖被釋放。

   ● USE ROLLBACK SEGMENT:可選的。 如果指定,它將事務(wù)分配給由 'segment_name' 標(biāo)識(shí)的回退段,該段是用引號(hào)括起來(lái)的段名稱(chēng)。

   ● NAME:為 'transaction_name' 標(biāo)識(shí)的事務(wù)分配一個(gè)名稱(chēng),該事務(wù)用引號(hào)括起來(lái)。

SET TRANSACTION 示例

下面我們來(lái)看一個(gè)演示如何在 Oracle 中使用 SET TRANSACTION 語(yǔ)句的示例。

只讀

首先,下面來(lái)看看看如何使用SET TRANSACTION語(yǔ)句將事務(wù)設(shè)置為只讀。

SET TRANSACTION READ ONLY NAME 'RO_example';

此示例會(huì)將事務(wù)設(shè)置為只讀,并為其分配“RO_example”的名稱(chēng)。

讀寫(xiě)

下面是如何使用 SET TRANSACTION 語(yǔ)句將事務(wù)設(shè)置為讀/寫(xiě)的示例:

SET TRANSACTION READ WRITE NAME 'RW_example';

use rollback segment 實(shí)例

一般在做報(bào)表查詢(xún)的時(shí)候,可以先設(shè)置該查詢(xún)事務(wù)為一個(gè)只讀事務(wù),以避免出現(xiàn)寫(xiě)操作。

DECLARE
  l_name VARCHAR2(100);
  l_age  NUMBER;
  l_sex  VARCHAR2(2);
BEGIN
  -- 為保證set transaction是事務(wù)的第一條語(yǔ)句,先使用commit或rollback來(lái)結(jié)束掉前面可能存在的事務(wù)
  COMMIT;
  -- 使用name給事務(wù)命名
  SET TRANSACTION READ ONLY NAME '查詢(xún)報(bào)表';
  SELECT NAME
    INTO l_name
    FROM student
   WHERE student_id = 1001;
  SELECT age
    INTO l_age
    FROM student
   WHERE student_id = 1001;
  SELECT sex
    INTO l_sex
    FROM student
   WHERE student_id = 1001;
  -- 終止只讀事務(wù)
  COMMIT;
  dbms_output.put_line('輸出:' || l_name || l_age || l_sex);
END;

以上就是 W3Cschool 為大家?guī)?lái)的 Oracle 中 SET TRANSACTION 語(yǔ)句的詳細(xì)用法介紹,希望對(duì)各位學(xué)習(xí) Oracle 的用戶(hù)有所幫助。


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)