首页 > 技术文章 > oracle for update for update nowait

zz-blog 2018-08-06 17:25 原文

 

 

 

 

对数据进行查询操作后,或提示ORA-00054错误,这时选定行的资源被占用,资源正忙。其他程序或者用户在占用着此行数据或者此表。

 

 

直接查询。

select * from A1 t  ; 

此时取到的数据为运行前的数据,同一时刻其他用户进行数据修改无法获取。

 

实时更新查询

select * from A1 t  for  update   ; 

for update 更新,其他管理者进行数据的操作时可以进行update ,此限制用户的数量,连接用户少,线程使用不被占用时可以使用。

 

等待3秒后更新

select * from A1 t  for  update  wait 3 ; 

在锁表的情况下,更新其他用户commit的数据,wait 3的作用让权操作。

 

实时更新查询

select * from A1 t  for  update  nowait ; 

for update nowait 根据字面意思理解,无需等待着更新,即实时更新。

使用for update nowait的好处:不用无限制的等待被锁定的行!

对锁定的数据可以使其他的操作者避免更多的等待,也可以进行更多的控制

对交互式应用很受用!对多用户操作的数据可以进行交互式保存。

若使用了skip locked,则可以越过锁定的行,不会报告由wait n 引发的‘资源忙’异常报告

 

推荐阅读