关于Oracle for update

【概述】

在日常中,我们对for update的使用还是比较普遍的,特别是在如pl/sql developer中手工修改数据。
此时只是觉得方便,而对for update真正的含义缺乏理解:
For update是Oracle提供的手工提高锁级别和范围的特例语句,Oracle的锁机制是目前各类型数据库锁机制中比较优秀的。
所以,Oracle认为一般不需要用户和应用直接进行锁的控制和提升,甚至认为死锁这类锁相关问题的出现场景,大都与手工提升锁有关。
所以,Oracle并不推荐使用for update作为日常开发使用。而且,在平时开发和运维中,使用了for update却忘记提交,会引起很多锁表故障。

pl/sql developer修改数据建议使用此种形式:select t.*,t.rowid from table t;

【使用场景】

需要业务层面数据独占时,可以考虑使用for update。

场景上,比如火车票订票,在屏幕上显示有票,而真正进行出票时,需要重新确定一下这个数据没有被其他客户端修改。所以,在这个确认过程中,可以使用for update。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。