4
在SQL Server我用内部查询如下几步:甲骨文等效ROWLOCK的,UPDLOCK,READPAST查询提示
- ROWLOCK(行级锁定)
- UPDLOCK(防止脏读)
- READPAST(不要阻止等待一个行锁,去第一个解锁行)
eg
select top 1 data from tablez with (rowlock,updlock,readpast);
Oracle是否存在等效的查询提示?
在SQL Server我用内部查询如下几步:甲骨文等效ROWLOCK的,UPDLOCK,READPAST查询提示
eg
select top 1 data from tablez with (rowlock,updlock,readpast);
Oracle是否存在等效的查询提示?
的ROWLOCK
应的是FOR UPDATE
条款
select *
from emp
for update;
由于11g的Oracle已经记录了SKIP LOCKED
语法这是READPAST
等价的:
select *
from emp
for update skip locked;
这句法已经好久工作(这是高级队列的基础),但如果它不在文档中,则不支持,
没有相应的UPDLOCK
锁定,因为Oracle平整不允许脏读。了解更多。
非常感谢。你确定你最后的陈述吗?看起来FOR UPDATE是UPDLOCK的替代品,而ROWLOCK更多的是所使用的锁的粒度。 – Synesso 2010-10-15 02:40:44
锁类型之间没有简单的一对一关系。 Oracle中的DML由行级锁驱动。在Oracle中没有共享读锁的概念,因为它使用了不同的一致性机制。独占插入/更新/删除锁定在数据记录本身上。 Oracle仅使用表级锁来防止并发DDL。 – 2010-10-15 03:04:46