【发布时间】:2014-09-17 13:45:55
【问题描述】:
我有两个 Oracle 模式 A 和 B。
我可以在架构 A 中创建一个触发器来侦听在架构 B 上创建表吗? 如果是,我需要做哪些资助?
【问题讨论】:
我有两个 Oracle 模式 A 和 B。
我可以在架构 A 中创建一个触发器来侦听在架构 B 上创建表吗? 如果是,我需要做哪些资助?
【问题讨论】:
是的,你可以。用户a需要有CREATE ANY TRIGGER:
作为 DBA:
CREATE USER a IDENTIFIED BY a;
GRANT CREATE SESSION, CREATE ANY TRIGGER TO a;
CREATE USER b IDENTIFIED BY b;
GRANT CREATE SESSION TO b;
作为:
CREATE OR REPLACE TRIGGER a.create_trigger
BEFORE CREATE ON b.SCHEMA
BEGIN
raise_application_error(num => -20000, msg=> 'create_trigger vetoes');
END;
/
作为乙:
CREATE TABLE t(i INT);
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-20000: create_trigger vetoes
ORA-06512: at line 2
您必须微调此触发器,它不仅会触发CREATE TABLE,还会触发所有CREATE 语句...
【讨论】:
BEFORE;但是对于您的场景,创建一个策略然后AFTER,是的。