Sono molto nuovi per i trigger Oracle. Supponiamo di avere un innesco su un inserto nella tabella emp. C'è un modo per scoprire quale è stato il record inserito che ha attivato il trigger. Volevo che il trigger avesse codice che faccia qualcosa se il record inserito fosse un valore particolare.Ottenere il valore che ha attivato il trigger Oracle
7
A
risposta
10
Supponendo di avere un trigger a livello di riga, si può semplicemente utilizzare il :NEW
pseudo-record di
CREATE TRIGGER name_of_trigger
BEFORE INSERT ON emp
FOR EACH ROW
DECLARE
<<declare variables>>
BEGIN
IF(:new.ename = 'JUSTIN')
THEN
<<do something if the newly inserted ENAME value is 'JUSTIN'>>
END IF;
END;
Per un trigger DDL, l'approccio è completamente diverso. In tal caso, le pseudofunzioni ora_dict_obj_owner e ora_dict_obj_name restituiranno il proprietario e il nome della tabella su cui è attiva l'istruzione DDL.
7
La riga che è essere insertes è disponibile come NEW
nel trigger
Partenza il manuale per maggiori dettagli.
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/create_trigger.htm#BABEBAAB
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#LNPLS99955
Ehi, @Justin Cave mi dispiace disturbarla ma ho capito che in realtà ho bisogno di un trigger DDL o SYstem e non di un trigger DML. Chiamerei un trigger ogni volta che viene creata una nuova tabella nello schema 'CREATE O REPLACE TRIGGER drop_trigger AFTER CREATE ON hr.SCHEMA BEGIN END;' Come otterrò il nome della tabella creata che ha attivato il trigger ora? È ancora NUOVO? – Eosphorus
@Eosforo - No, i trigger DDL sono animali molto diversi. Aggiornato la mia risposta. –
grazie mille Justin. Questo è un bel po 'di volte in cui mi hai aiutato ora. Lo apprezzo molto :) – Eosphorus