Categories: Oracle 教程

Oracle 事务:Oracle SET TRANSACTION语句(设置事务)

在 Oracle 中,SET TRANSACTION 语句可以用来设置事务的各种状态,比如只读、读/写、隔离级别,为事务分配名称或将事务分配回滚段等等。本教程要为大家带来的就是 SET TRANSACTION 语句的语法以及示例,教大家如何正确使用该语句。

SET TRANSACTION语法

Oracle中SET TRANSACTION语句的语法是:

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

参考

   ● READ ONLY:可以将事务设置为只读事务。

   ● READ WRITE:可以将事务设置为读/写事务。

   ● ISOLATION LEVEL: 如果指定,它有两个选项:

        1.ISOLATION LEVEL SERIALIZE:如果事务尝试更新由另一个事务更新并未提交的资源,则事务将失败。

        2.ISOLATION LEVEL READ COMMITTED:如果事务需要另一个事务持有的行锁,则事务将等待,直到行锁被释放。

   ● USE ROLLBACK SEGMENT:可选的。 如果指定,它将事务分配给由 segment_name 标识的回退段,该段是用引号括起来的段名称。

   ● NAME:为 transaction_name 标识的事务分配一个名称,该事务用引号括起来。

SET TRANSACTION 示例

下面我们来看一个演示如何在 Oracle 中使用 SET TRANSACTION 语句的示例。

只读

首先,下面来看看看如何使用SET TRANSACTION语句将事务设置为只读。

SET TRANSACTION READ ONLY NAME RO_example;

此示例会将事务设置为只读,并为其分配“RO_example”的名称。

读写

下面是如何使用 SET TRANSACTION 语句将事务设置为读/写的示例:

SET TRANSACTION READ WRITE NAME RW_example;

use rollback segment 实例

一般在做报表查询的时候,可以先设置该查询事务为一个只读事务,以避免出现写操作。

DECLARE
  l_name VARCHAR2(100);
  l_age  NUMBER;
  l_sex  VARCHAR2(2);
BEGIN
  -- 为保证set transaction是事务的第一条语句,先使用commit或rollback来结束掉前面可能存在的事务
  COMMIT;
  -- 使用name给事务命名
  SET TRANSACTION READ ONLY NAME 查询报表;
  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;
  -- 终止只读事务
  COMMIT;
  dbms_output.put_line(输出: || l_name || l_age || l_sex);
END;

以上就是 W3Cschool 为大家带来的 Oracle 中 SET TRANSACTION 语句的详细用法介绍,希望对各位学习 Oracle 的用户有所帮助。

唐伯虎点蚊香

前端小白,想各位学习!

Share
Published by
唐伯虎点蚊香

Recent Posts

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

4 天 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

2 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

2 周 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

2 周 ago

聊聊React和Vue组件更新的实现及区别

React 和 Vue 都是当…

3 周 ago