oracle 当使用authID作为current_user时,如果调用者没有在plsql过程中使用的表,会发生什么?

g52tjvyc  于 2023-06-22  发布在  Oracle
关注(0)|答案(2)|浏览(117)

假设我在plsql中创建了一个过程,其authid为current_user,用于更新表t1。如果没有为user2创建表t1,另一个用户调用该过程会发生什么情况。
是否会导致错误或更新用户1表?

epfja78i

epfja78i1#

AUTHID设置其 * 特权 * 有效的用户。它不设置当前的模式。因此,它不会影响对象分辨率。过程所有者将是当前模式,过程所做的任何未限定对象引用将解析为过程所有者(或公共)所拥有的对象,而不管调用者是谁。但是对于AUTHID CURRENT_USER,是否允许对这些对象进行操作取决于调用者的权限。

l7wslrjt

l7wslrjt2#

当执行带有AUTHIDCURRENT_USER子句的PL/SQL过程时,这意味着该过程以调用它的当前用户的权限运行。如果调用用户对过程中引用的表没有必要的特权或访问权限,则将导致错误。
它可能发生在两种不同的情况下
1.运行时错误
1.编译错误
您可以参考此https://www.dba-oracle.com/t_authid_current_user.htm

相关问题