skip lock

有的时候我们操作数据库的时候需要给表数据加锁,就会使用到for update关键字:
select * from tableA a where a.name = "tony" for update;
但是这个脚本有一个问题,如果由于某种原因name="tony"这行数据已经加锁了,这个语句就会出现一个如下的报错

ORA-000054:resource busy and acquire with NOWAIT specified

如何避免出现这个问题,就要使用skip locked关键字了,将上面的语句改为:
select * from tableA a where a.name = "tony" for update skip locked;
就不会报错了
因为skip locked关键字首先判断记录是否已经锁定,如果是,会自动跳过已经加锁的行

 

转自:https://blog.csdn.net/yufeng1397/article/details/84258453

posted @ 2020-07-31 11:34  快看,阳光!  阅读(242)  评论(0编辑  收藏  举报