本文转自:http://yedward.net/?id=24

set transaction语句允许开始一个只读或者只写的事务,建立隔离级别或者是为当前的事务分配一个特定的回滚段。需要注意的是,set transaction必须是事务处理中的第一条语句,注意是事务处理的第一条语句,不是指代码的第一条语句,并且set transaction在一个事务中只能出现一次。

set transaction的语法如下:

SET TRANSACTION parameter;

parameter是用来指定参数的,其可用参数有如下几种类型:

(1)read only:表示建立只读事务,在此事务中只有select、select into、open、fetch、close、lock table、commit、rollback语句才允许出现,不可以执行insert、update、select for update等非法操作,对于这种事务模式不用指定回滚段。

(2)read write:建立读写事务,该事务既可读、也可写,oracle默认的事务就是这种类型。

(3)isolation level:用来设置事务的隔离级别,可以设置为serializable和read committed这两个选项。serializable会使得对已经修改但没有提交的数据对象的DML事务失败;read committed会使得对已经修改但没有提交的数据库对象的DML事务在进行修改时,会等待先前DML锁释放,这也是oracle默认的事务的隔离级别。

可以使用use rollback segment给事务定义一个合适的回滚段,如下例子:

SET TRANSACTION ISOLATION USE ROLLBACK SEGMENT segmentname;

一般在做报表查询的时候,可以先设置该查询事务为一个只读事务,以避免出现写操作,可以看下面这样的一个例子:

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;

[转]oracle中使用set transaction设置事务属性的更多相关文章

  1. MySQL SET TRANSACTION 设置事务隔离级别

    1. 首先说一下autocommit 默认情况下autocommit的开关是打开的,也就是ON,查看方法 方法1. select @@[global/session].autocommit; 方法2. ...

  2. oracle中自定义type、以及java中传递list到过程中的例子

    在java开发过程中有时候为了处理数据的速度更快,会把要处理的数据组装成list,把list作为过程的一个参数,在过程中批量处理,下面就以一个例子做简单的阐述,以此谨记. --药品目录智能审核 --说 ...

  3. Java开发学习(二十二)----Spring事务属性、事务传播行为

    一.事务配置 上面这些属性都可以在@Transactional注解的参数上进行设置. readOnly:true只读事务,false读写事务,增删改要设为false,查询设为true. timeout ...

  4. Web API中的路由(二)——属性路由

    一.属性路由的概念 路由让webapi将一个uri匹配到对应的action,Web API 2支持一种新类型的路由:属性路由.顾名思义,属性路由使用属性来定义路由.通过属性路由,我们可以更好地控制We ...

  5. oracle中事务处理--事务隔离级别

    概念:隔离级别定义了事务与事务之间的隔离程度. ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别(这是国际标准化组织定义的一个标准而以,不同的数据库在实现时有所不同). 隔离级别 脏读 ...

  6. 【Oracle】浅析Oracle中的事务

    1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不 ...

  7. 事务的隔离级别以及oracle中的锁

    事务的概念及特性 事务,一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语 ...

  8. 关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍

    AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...

  9. (转)关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍

    AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...

随机推荐

  1. JS Nice – JavaScript 代码美化和格式化工具

    JS Nice 是一款让经过混淆处理的 JavaScript 代码可读更好的工具.它使用一种新型的用于 JavaScript 代码美化的去混淆和去压缩引擎.JSNice 采用先进的机器学习和程序分析技 ...

  2. Google Web Designer – 创建引人入胜的 HTML5 网站

    Google Web Designer 可以帮助你创建引人入胜,互动的基于 HTML5 的设计和动画,可以在任何设备上运行.如果你喜欢自己动手,设计背后的所有的代码都是可以手工编辑的. 虽然可视化工具 ...

  3. CSS3文本温故

    1.CSS早期属性,分为三大类:字体.颜色和文本: 2.CSS文本类型有11个属性: 注:还有一个颜色属性:color,主要用来设置文本颜色 3.CSS3文本阴影属性:text-shadow语法:te ...

  4. 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService... 匹配的导出 VS2012报错

    刚安装完VS2012,打开VS2012新建项目,但是并没有像之前那样顺利的创建页面,而是弹出了一个错误窗口. 我的系统是win7旗舰版 64位 ,同时安装了VS2010和VS2012.然后我又试了一下 ...

  5. putty不能连接linxu,报:connection refused

    用putty连接新装的centos6.5,出现了connection refused问题, 后参考http://blog.sina.com.cn/s/blog_60d2d62a0100tq2l.htm ...

  6. IOS圆头像

    前言 随着腾讯QQ的普及,现在越来越多的社交类APP在显示好友头像时,都选择用圆形头像,效果如下(不包括黑底): 在ios开发中,大致有以下三种方案来实现圆形头像效果. 方案一:用Quartz2D绘制 ...

  7. unbuntu apahce 2 设置 多域名

    1.找到apache2 的设置路径 默认的apache的路径为/etc/apache2/ 2. 修改httpd.conf 本文192.168.0.1 为自己的服务器的ip,下面一样的意思 Server ...

  8. 【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题

    前言 这个问题在之前做一个盒子项目时遇到过,最近又遇到了,使用GridView遇到的非常奇葩的问题,这里记录分享一下. 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnb ...

  9. 委托 C#

    这些就是自己的理解. 委托的用处就是把方法传递给其他方法. 1委托的使用更类差不多,也 是需要先定义再实例化. 2Action<T>和Func<T>委托 3多播委托 4.匿名方 ...

  10. 怎么样使用yum来安装、卸载jdk

    安装好的CentOS会自带OpenJdk,用命令 java -version ,会有下面的信息: java version "1.6.0"OpenJDK  Runtime Envi ...