2011-01-27 10 views
6

So che posso usarlo per creare il trigger di creazione DDL;Creazione di un trigger da eseguire solo quando viene creata una nuova tabella

CREATE OR REPLACE TRIGGER 
    create_table_trigger 
    AFTER CREATE ON SCHEMA 
DECLARE 
BEGIN 
END; 

Problema: questo trigger verrebbe eseguito su DDL come "Crea sequenza"; come posso eseguire questo solo per DDL 'Crea tabella'?

+0

Creazione di una tabella suona come un progetto di database altamente discutibile. –

+1

Forse @OMG, ma ci sono sicuramente dei momenti in cui la creazione di tabelle è un buon progetto. – jzd

+0

@jzd: hai un esempio? –

risposta

13
CREATE OR REPLACE TRIGGER 
    create_table_trigger 
    AFTER CREATE ON SCHEMA 
BEGIN 
    IF SYS.DICTIONARY_OBJ_TYPE = 'TABLE' THEN 
     .... 
END; 

Per un elenco di Attributi evento, fare riferimento a questa pagina
http://ist.marshall.edu/ist480adbp/plsql_triggers.html (link verso il basso)

Per quanto ne so, dictionary_obj_type è uno dei TAVOLO | SEQUENZA | PROCEDURA | INDICE | FUNZIONE | TYPE | PACKAGE

E dictionary_obj_name è solo il nome della tabella/sequenza/proc/etc.

  • dictionary_obj_type Restituisce il tipo dell'oggetto dizionario in cui è avvenuta l'operazione DDL che ha attivato il grilletto.
  • dictionary_obj_name Restituisce il nome dell'oggetto dizionario su cui si è verificata l'operazione DDL che ha generato il trigger.
+0

Booya .. Grazie –

+0

Oh, come posso ottenere il nome della tabella che si sta creando? –

+0

Ho aggiornato la risposta con un link – RichardTheKiwi

Problemi correlati