何时提及 authID 作为 current_user

Wol*_*ang 5 oracle

我主要是一个 Oracle 新手,所以请原谅我,如果这是一个愚蠢的问题......

我已经阅读了很多关于 authID 的文章,我的理解是 AUTHID 子句指示 Oracle 例程是使用调用者权限 (CURRENT_USER) 还是使用所有者权限 (DEFINER) 运行。如果未指定该子句,Oracle 将默认使用 AUTHID DEFINER。

您能给我一个简单的例子来更好地理解 authID 吗?

Osy*_*Osy 7

这里是例子:

User1 有 DEPARTMENTS 表。

User2 也有 DEPARTMENTS 表。

如果我们在 User2 模式中创建此过程

    -- Connected as User2    
    CREATE OR REPLACE PROCEDURE create_dept (

       v_deptno NUMBER,
       v_dname  VARCHAR2,
       v_mgr    NUMBER,
       v_loc    NUMBER) 
    AUTHID CURRENT_USER AS
    BEGIN
       INSERT INTO departments VALUES (v_deptno, v_dname, v_mgr, v_loc);
    END;
    /
Run Code Online (Sandbox Code Playgroud)

然后,如果我们在授予适当的权限后从 User1 调用此过程,

-- Connected as User1
CALL create_dept(44, 'Information Technology', 200, 1700);
Run Code Online (Sandbox Code Playgroud)

该记录将被插入到:

用户1.部门

因为过程是作为当前用户执行的 - User1 调用者。

如果我们在创建过程时省略了 AUTHID CURRENT_USER,则记录将像往常一样插入到 User2.DEPARTMENTS 中。

华泰