Oracle
 sql >> Base de données >  >> RDS >> Oracle

Créer un déclencheur sur Oracle à partir d'un utilisateur qui écoute les événements d'un autre utilisateur

Oui, vous pouvez. L'utilisateur a besoin d'avoir CREATE ANY TRIGGER :

En tant que 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;

En tant que :

CREATE OR REPLACE TRIGGER a.create_trigger
  BEFORE CREATE ON b.SCHEMA
BEGIN
  raise_application_error(num => -20000,  msg=> 'create_trigger vetoes');
END;
/

Comme 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

Vous devrez affiner ce déclencheur, il ne se déclenchera pas seulement pour CREATE TABLE mais pour tous CREATE déclarations...