报错的情形如下,
A用户:视图V_A
B用户:视图V_B,并且用到了V_A
C用户:需要用V_B,
授权过程,
A用户下:
grant select on V_A to B
B用户下:
grant select on V_B to C
此时报错:ora-01720 授权选项对于'V_A'不存在。
那么是什么原因呢,因为B还需要授权视图给C用户,但是B用到的视图是A下的,所以除了将V_A授权select权限给B外,还要授权操作权限。
比如这里就需要在A用户下,授权grant操作权限给B,那么B才能继续授权给C。如下:
A用户下:
grant select on V_A to B with grant option
B用户下:
grant select on V_B to C
此时正确。C中能正常使用V_B了。
同样如果C还要继续授权则B用户下也要依此进行授权。
If opportunity doesn’t knock, build a door