假设我在plsql中创建了一个过程,其authid为current_user,用于更新表t1。如果没有为user2创建表t1,另一个用户调用该过程会发生什么情况。是否会导致错误或更新用户1表?
epfja78i1#
AUTHID设置其 * 特权 * 有效的用户。它不设置当前的模式。因此,它不会影响对象分辨率。过程所有者将是当前模式,过程所做的任何未限定对象引用将解析为过程所有者(或公共)所拥有的对象,而不管调用者是谁。但是对于AUTHID CURRENT_USER,是否允许对这些对象进行操作取决于调用者的权限。
AUTHID
AUTHID CURRENT_USER
l7wslrjt2#
当执行带有AUTHIDCURRENT_USER子句的PL/SQL过程时,这意味着该过程以调用它的当前用户的权限运行。如果调用用户对过程中引用的表没有必要的特权或访问权限,则将导致错误。它可能发生在两种不同的情况下1.运行时错误1.编译错误您可以参考此https://www.dba-oracle.com/t_authid_current_user.htm
2条答案
按热度按时间epfja78i1#
AUTHID
设置其 * 特权 * 有效的用户。它不设置当前的模式。因此,它不会影响对象分辨率。过程所有者将是当前模式,过程所做的任何未限定对象引用将解析为过程所有者(或公共)所拥有的对象,而不管调用者是谁。但是对于AUTHID CURRENT_USER
,是否允许对这些对象进行操作取决于调用者的权限。l7wslrjt2#
当执行带有AUTHIDCURRENT_USER子句的PL/SQL过程时,这意味着该过程以调用它的当前用户的权限运行。如果调用用户对过程中引用的表没有必要的特权或访问权限,则将导致错误。
它可能发生在两种不同的情况下
1.运行时错误
1.编译错误
您可以参考此https://www.dba-oracle.com/t_authid_current_user.htm