sql >> Databasteknik >  >> RDS >> Oracle

Skapa trigger på Oracle från en användare som lyssnar på händelser för en annan användare

Jo det kan du. Användaren måste ha CREATE ANY TRIGGER :

Som 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;

Som en:

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

Som 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

Du måste finjustera den här utlösaren, den aktiveras inte bara för CREATE TABLE men för alla CREATE uttalanden...




  1. varchar(max) överallt?

  2. Ta bort avvisade e-postadresser automatiskt från databasen?

  3. En översikt över JSON-funktioner inom PostgreSQL

  4. Förstå resultatet av Execute Explain Plan i Oracle SQL Developer