有一个连接begin;
delete from edoor where dcode="0015";这里开起另一连接,set tx_isolation=SERIALIZABLE;
select * from edoor where dcode="0015";请问应该是什么结果?我测试的结果是,依然可以查询到这条数据?
我本来以为SERIALIZABLE会将所有无格式SELECT语句被隐式转换成SELECT ... LOCK IN SHARE MODE,所以应该一起等着上边的事务结束才对,可是结果不是这样我再第二个连接中再做如下测试:
set tx_isolation=SERIALIZABLE;
begin;
select * from edoor where dcode="0015";
这个会等。我再测试:
set tx_isolation=REPEATABLE-READ;
begin;
select * from edoor where dcode="0015";这时不会等。这不是等同于说SERIALIZABLE级别,只有在事务中,才会将select隐式的加上LOCK IN SHARE MODE我想要的结果是:所有的select都要读到另一务提交之后的结果,我又不想显示的加上LOCK IN SHARE MODE,有什么办法?
可是我测试了四种级别,比如:
READ UNCOMMITTED,即使我不起事务它也一样会起做用(读不到删除那条记录即脏读)还有就是好象,只要在select语句中显示加上LOCK IN SHARE MODE,不管在任何级别,起不起事务,这个语句总会等delete那个事务结束才返回结果谁能帮我彻底清晰分析一下这四个级别准确含义及具体应用,谢谢