背景说明
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。