【概述】
在日常中,我们对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。
时间: 2024-10-06 17:12:18