Oracle语法

原理

执行后,Oracle会启动一个新事务,尝试对数据加锁。如果发现当前数据已被加锁,默认则会等待到该锁被释放。使用for update后需要提交事务

语法

SELECT … FOR UPDATE \[OF column\_list\]\[WAIT n|NOWAIT\]\[SKIP LOCKED\];
  • OF:指定即将更新的列,将会对特定列加锁;
  • WAIT:指定等待其他用户释放锁的时间,如果超时则报错;
  • SKIP LOCKED:跳过已经被锁定的行。

应用

  1. Oracle语法,多用于在PL/SQL中手动修改数据;
  2. 在查询时,避免其他用户对该表进行插入,修改或删除操作, 需要业务层面数据独占时使用,如定票系统等。

用于Oracle的锁机制已经比较完善,所以认为一般不需要手动进行锁的控制和提升,所以在日常开发中不推荐使用for update语法。