我想通过触发器更新其他架构表。当我从scott模式创建触发器时它工作正常,但在系统模式中遇到以下错误。
Error(3,14): PL/SQL: ORA-01031: insufficient privileges
create or replace trigger trig_tt_1
after update on system.table1
begin
update scott.table1 a
set (a.col3,a.col4,a.col5) = (select b.col3,b.col4,b.col5
from system.table1 b
where b.col1= a.col1);
end;
for information, when i execute the update script alone its working fine.
答案 0 :(得分:0)
在您尝试从不同架构访问的对象上缺少GRANT
。
试试这个:
1.登录SCOTT
架构。
2.给GRANT ALL on scott.table1 to SYSTEM
。
3.登录SYSTEM
架构并再次创建触发器。
经过测试:
没有拨款 - 遇到错误
提供赠款
创建没有错误的触发器
答案 1 :(得分:0)
只有当您没有CREATE ANY TRIGGER priv时才会出现此错误。由于您已成功在SCOTT模式中创建了TRIGGER,但在尝试在SYSTEM模式中创建TRIGGER时,您将面临“INSUFFICIENT PRIV”错误。 有两种方法可以解决此问题。
<强>推荐强>
不推荐
GRANT CREATE ANY TRIGGER TO SCOTT
- &gt;这将使您能够在任何架构中创建TRIGGER。但这个强烈不推荐。这些权利应仅由DBA保留,而不是开发人员。希望这有帮助。