背景说明

Oracle支持Select for update 和 For update of column的语法,这两种语法对于单表来说没有区别,都是锁单表符合条件的相关行。对于多表来说For update会锁多表符合条件的行,For update of 会根据条件锁定相应表的行。例如:
  • 单表

    select * from test where id =10 for update

    select * from test where id=10 for update id

    说明 锁定id=10的行。
  • 多表

    select * from test inner join t1 on test.id=t1.id where test.id=10 for update

    select * from test inner join t1 on test.id=t1.id where test.id=10 for update of test

    说明 锁定id=10的test和t1的行。

解决方案

PolarDB目前仅支持For update的语法,不支持For update of的语法。您可以根据业务情况将语法适当调整为For update。