Home >Database >Mysql Tutorial >Oracle之AUTHID CURRENT_USER

Oracle之AUTHID CURRENT_USER

WBOY
WBOYOriginal
2016-06-07 16:46:121059browse

没有AUTHID CURRENT_USER表示定义者权限(definer rights),以定义者身份执行;加上AUTHID CURRENT_USER表示调用者权限(invoke

没有AUTHID CURRENT_USER表示定义者权限(definer rights),以定义者身份执行;加上AUTHID CURRENT_USER表示调用者权限(invoker rights),以调用者身份执行。

例: 

1. 创建两个用户:xxpo,xxgl

2. 在xxpo下创建一张表:xxpo_authid_test

  • CREATE TABLE xxpo.xxpo_authid_test(ID NUMBER,NAME VARCHAR2(20));  
  • 3. 在xxpo下创建如下两个procedure

    3.1 xxpo_no_authid_test_prc:

    3.2 xxpo_has_authid_test_prc:

    4. 将两个procedure的执行权限(EXECUTE)赋予xxgl:

    5. 在xxgl分别调用xxpo下面的两个procedure,查看结果:

    由于我们并没有在xxgl用户下创建一个名为xxpo_authid_test的表,所以当我们在xxgl用户下以调用者(xxgl)权限去执行xxpo.xxpo_has_authid_test_prc这个procedure的时候,会报表不能找到(ORA-00942)的错误;而以定义者(xxpo)权限去执行则不存在此问题。

    linux

    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn