我正在使用select for UPDATE NOWAIT更新获取表的第一行
SELECT * from table where rownum=1 for UPDATE NOWAIT;
这里有多个相同过程的实例。因此,下一个实例可能会找到表锁定
如何在此处跳过锁定的行?
答案 0 :(得分:0)
这很简单:
select * from table where rownum=1 for update skip locked;
我不知道rownum过滤器是如何工作的,我认为第二个读者将获得第一个免费记录(未锁定)但它也可能意味着它不会被点击。试试吧!
答案 1 :(得分:0)
“其中rownum = 1”部分无法按预期工作。似乎在for子句之后评估了“ for update skip lock”子句。因此, first 首先选择您可能想要的记录,然后然后您可以跳过那些被锁定的记录。 不幸的是,我看不到如何通过一个查询就能实现“给我第一个被解锁的东西”之类的东西。