孙卫琴的Hibernate一书中讲了悲观锁的实现,说:
由于Oracle默认的事务隔离级别为:Read Committed,没法保证并发的对同一条记录的update。
然后说用悲观锁能够解决,说有两种实现方式:
1、用select * from xxx for update这种语句
2、对于不支持上面这种语句的数据库采用在表中添加指示字段的方法,比如一个字段是布尔类型,true表示不能使用,false表示可以使用。每当一个事务想修改一条记录的时候,就先检查指示字段是不是为fasle。我的问题就出现在这块儿了,既然Oracle默认的事务隔离级别为Read Committed,那么在检查指示字段的真假时不是也就没法保证正确了么?这不是扯淡呢吗?还是我哪里理解的不对??请大牛们指教。。。
------解决方案--------------------
理解的没错。
第二种方法不靠谱。
------解决方案--------------------
不支持for update的数据库,不会是指sqlserver吧 :)
------解决方案--------------------
------解决方案--------------------