oracle中执行select … for update需要什么权限?
问题
在oracle中,一个用户执行select … for update需要什么权限?
分析测试
用户1: test_0614
用户2:test
目标表:test.t_0614
执行语句:select * from test.t_0614 where object_id=16 for update;
只给select 权限
grant select on test.t_0614 to test_0614;
发现sql可以执行成功,但在提交时报权限不足。此时有Row-X 行独占(RX)
只给update权限
grant update on test.t_0614 to test_0614;
sql语句在执行失败,报权限不足。
给select + update 权限
grant update on test.t_0614 to test_0614;
grant select on test.t_0614 to test_0614;
sql能正常执行,也能正常提交。
总结
1、只需要select权限就能执行select…for update (不能提交修改,但会锁表),所以这里可能会被坑。
2、完整执行select…for update 需要select+update 权限