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

原文地址:https://www.cnblogs.com/hopeiscoming/p/13408757.html