资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

只有select权限也能锁表?readandselect

有个客户问我说,为啥只有select权限,也可以for update锁表。

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了全州免费建站欢迎大家使用!

我懵了一下,不确认啊,我先测试了下,如下所示:

 create user test11 identified by test11;

 create user test12 identified by test12;

grant connect,resource to test11,test12;

create table test11.objects as select * from dba_objects;

grant select on test11.objects to test12;

会话1:

只有select权限也能锁表?read and select

会话2:

只有select权限也能锁表?read and select

可以看到,确实仅有可读的权限下,是可以for update的。

为啥可以for update,似乎不符合逻辑,点太小了,只能在官方文档那个上搜了,不得不夸一句,oracle官方文档真的详细。只能想着在官方文档上看看有没有线索,一查,发现还真有!

如下:

SELECT      Query the table with the SELECT statement, including SELECT ... FOR UPDATE.

可以看到,select确实包含了 for update权限。

不一样的是,除了select之外,还有一个read表示查询,但是read不包含 for update。这个是12.1之后才有的变化。

READ Query the table with the SELECT statement. Does not allow SELECT ... FOR UPDATE.

Note: This privilege is available starting with Oracle Database 12 c Release 1 (12.1.0.2).

为啥select会有for update权限呢,可能是出于希望查询能够强制一致性的关系。

但这个其实对于大多数查询场景来说,for update的锁表权限还是太大了,所以在12.1开始,分离除了更小的read权限,用以满足客户需求。


网站栏目:只有select权限也能锁表?readandselect
本文地址:http://cdkjz.cn/article/gjipdi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220