使用set transcation read only无法重复读吗?

[复制链接]
查看11 | 回复1 | 2012-2-17 12:13:15 | 显示全部楼层 |阅读模式
书上说set transcation read only语句可以保证在不带来任何锁的前提下,会话看不到任何表的提交或者未被提交的操作。

实验如下:
session1 :
create table test(col1 number);
insert into test values(1);
insert into test value(2);
commit;
set transcation read only
select * from test;
结果为
1
2
session2执行:
insert into test value(3);
commit;

session1执行
select * from test;
结果为
1
2
3
按照书上所说,应该为两条记录。因为使用只读事务,session2上面的更改session1应该看不到才对



回复

使用道具 举报

千问 | 2012-2-17 12:13:15 | 显示全部楼层
你的TRANSACTION拼写错了。
会话1:
create table test(col1 number);
insert into test values(1);
insert into test values(2);
commit;
SET TRANSACTION READ ONLY;
SELECT * FROM TEST;
COL1
----------
1
2
会话2:
INSERT INTO TEST VALUES(3);
1 row created.
COMMIT;

会话1:
SELECT * FROM TEST;
COL1
----------
1
2
--------- 还是只看到两条
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行