我要在用户IDK
上执行代码:
CREATE OR REPLACE TRIGGER sal_trig
AFTER UPDATE OF status ON TAB1
FOR EACH ROW
WHEN (new.status = 'ZAK')
CALL log_sal(1, 5, 8);
我有以下补助:
GRANT CREATE PROCEDURE TO IDK;
GRANT CREATE SEQUENCE TO IDK;
GRANT CREATE TABLE TO IDK;
GRANT CREATE TRIGGER TO IDK;
GRANT CREATE TYPE TO IDK;
GRANT UNLIMITED TABLESPACE TO IDK;
GRANT SELECT ON TAB1 TO IDK;
我需要更多的赠款吗?
我不会在TAB1
上进行更新/删除/插入。
我得到error:
not sufficient privileges
。
我从用户IDK
创建了过程:
CREATE OR REPLACE PROCEDURE log_sal (
emp_id NUMBER,
old_sal NUMBER,
new_sal NUMBER
)
AS LANGUAGE JAVA
NAME 'CaseWatch.logSal(int, float, float)';
答案 0 :(得分:4)
根据您的注释,由不同用户创建的TAB1表,因此该表处于不同架构中,这是主键。 当您想授予特权以不同模式在表上创建触发器时,您需要使用:
GRANT CREATE ANY TRIGGER TO IDK;
CREATE TRIGGER
=>实际上授予了在被授予者的架构中创建数据库触发器的权限,在您的情况下,如果IDK创建了TAB1,那么此特权就足够了。
关于CREATE ANY TRIGGER
,您可以在这里找到更多有趣的信息: