set transaction语句允许开始一个只读或者只写的事务,建立隔离级别或者是为当前的事务分配一个特定的回滚段。需要注意的是,set transaction必须是事务处理中的第一条语句,注意是事务处理的第一条语句,不是指代码的第一条语句,并且set transaction在一个事务中只能出现一次。
set transaction的语法如下:
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给事务定义一个合适的回滚段,如下例子:
一般在做报表查询的时候,可以先设置该查询事务为一个只读事务,以避免出现写操作,可以看下面这样的一个例子:
欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) | Powered by Discuz! X3.2 |