"Ho un database con (anche) molti trigger, che possono essere sovrapposti."
Questo è solo uno dei motivi per cui molte persone si innervosiscono.
"C'è un modo per sapere ciò che fa scattare avrebbe sparato prima di eseguire la query "
No. Prendiamo in considerazione una cosa che si potrebbe trovare in un corpo UPDATE trigger:
if :new.sal > :old.sal * 1.2 then
insert into big_pay_rises values (:new.empno, :old.sal, :new.sal, sysdate);
end if;
Come potremmo stabilire se il trigger su BIG_PAY_RISES verrà attivato? Potrebbe, potrebbe non dipendere da un algoritmo che non possiamo analizzare dall'istruzione DML.
Quindi, il meglio che puoi sperare è una ricerca ricorsiva di DBA_TRIGGERS e DBA_DEPENDENCIES per identificare tutti i trigger che potrebbe funzione nella vostra cascata. Ma sarà impossibile identificare quali spareranno sicuramente in ogni scenario.
"o quali trigger sono stati attivati dopo averlo eseguito (non ancora eseguito il commit)?"
Come altri hanno sottolineato, la registrazione è un'opzione. Ma se si utilizza Oracle 11g, si ha un'altra opzione: il profilo gerarchico PL/SQL. Questo è uno strumento non intrusivo che tiene traccia di tutte le unità di programma PL/SQL toccate da una chiamata PL/SQL, compresi i trigger.Una delle caratteristiche interessanti di Hierarchical Profiler è che include le PU che appartengono ad altri schemi, che potrebbero essere utili con i trigger a cascata.
Quindi, è sufficiente avvolgere l'SQL in un blocco anonimo e chiamarlo con Hierarchical Profiler. Quindi puoi filtrare il rapporto per rivelare solo i trigger attivati. Find out more.
Non conosco un modo per simulare l'esecuzione del trigger ma se si è in grado di modificare i corpi dei trigger si potrebbe voler aggiungere alcune istruzioni di registro come un inserto in una tabella dedicata con il suo nome e un timestamp. A proposito: se stai usando 11g, puoi dare uno sguardo ai trigger composti ... – Toby
@Toby, aggiungere dichiarazioni di log sarebbe un'idea ... ma significherebbe riscriverli tutti. Analizzeremo i trigger composti, ma abbiamo clienti che usano ancora il 9i. – Benoit