从一个侦听另一个用户的事件的用户在Oracle上创建触发器 [英] Create trigger on Oracle from a user that listens to events for another user

查看:52
本文介绍了从一个侦听另一个用户的事件的用户在Oracle上创建触发器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个Oracle模式A&B.

I have two Oracle schemas A & B.

我可以在架构A中创建一个触发器,以监听架构B上的创建表吗?如果是,我需要做哪些补助?

Can I create a trigger in schema A that will listen to Create Tables on Schema B? If yes, which grants do I need to do?

推荐答案

是的,可以.用户a需要具有创建任何触发器:

Yes, you can. The user a needs to have 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;
/

为b:

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 语句触发...

You'll have to fine-tune this trigger, it will fire not only for CREATE TABLE but for all CREATE statements...

这篇关于从一个侦听另一个用户的事件的用户在Oracle上创建触发器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆