Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1702946
  • 博文数量: 136
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3261
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-22 11:26
文章分类

全部博文(136)

文章存档

2010年(1)

2009年(26)

2008年(109)

我的朋友

分类: Oracle

2008-06-08 08:19:25

将当前事务设置为只读模式。在该模式下所发出的查询,都是查询的设置事务只读模式时的数据状态(通过一致性读取实现)。比如我在 session 1 中设置事务为只读模式:
 
-- session 1
SQL> set transaction read only;
 
事务处理集。
 
SQL> select * from test1;
 
A                             B
-------------------- ----------
test1                        99
test1                      1010
test1                      1111
test1                      1212
test1                      1313
tianyc                     6666
 
已选择6行。
 
在 session 2 中,我修改 test1 中数据,并提交:
 
-- session 2
SQL> insert into test1 values('new', 9999);
 
已创建 1 行。
 
SQL> commit;
 
提交完成。
 
SQL> select * from test1;
 
A                             B
-------------------- ----------
test1                        99
test1                      1010
test1                      1111
test1                      1212
test1                      1313
tianyc                     6666
new                        9999
 
已选择7行。
 
此时,虽然事务已经持久化到数据库中了,但在 session 1 中查询到的仍是 6 条数据:
 
-- session 1
SQL> set transaction read only;
 
事务处理集。
 
SQL> select * from test1;
 
A                             B
-------------------- ----------
test1                        99
test1                      1010
test1                      1111
test1                      1212
test1                      1313
tianyc                     6666
 
已选择6行。
 
这个功能有什么用处呢?当你要做多个报表时,为了构造一致的数据,避免由于制作报表期间数据被更新而导致不平衡的数据出现,可以设置你的事务为只读模式。
阅读(1528) | 评论(1) | 转发(0) |
0

上一篇:DML and Record

下一篇:SQL - SUM and NVL

给主人留下些什么吧!~~

edeed2008-06-08 11:48:45

我尝试了一下,在oracle10g中,没有得到你说的结果