声明如何更新'作品?

时间:2016-05-17 11:45:59

标签: sql oracle stored-procedures

如果我听起来像菜鸟,我很抱歉。我正在查看存储过程的代码,我遇到了:

select 
  ...
into 
  ....
from
  ....
where
  ....
for update;

我不明白for update;的目的是什么。 我确实理解正常更新,类似于:http://www.mkyong.com/oracle/oracle-stored-procedure-update-example/。但是无法理解for update;及其目的。

我环顾四周但找不到明确的解释。

1 个答案:

答案 0 :(得分:2)

来自document

  

SELECT FOR UPDATE语句允许您锁定中的记录   游标结果集。您无需更改记录   为了使用这个声明。当记录锁被释放时   发出下一个commit或rollback语句。

另请参阅说明的Oracle docs

  

FOR UPDATE子句允许您锁定所选行以便其他行   在您结束交易之前,用户无法锁定或更新行。   您只能在顶级SELECT语句中指定此子句,而不能   在子查询中。

因此,目的非常清楚,当您想要在事务期间锁定行时使用它,以便某些其他事务无法使用它。

您还可以参考:FOR UPDATE Clause in a SELECT Statement来了解我们如何使用它。