Oracle
 sql >> Database >  >> RDS >> Oracle

Cosa succede ai trigger dipendenti quando la tabella viene eliminata?

La tabella è stata eliminata, ma si trova nel cestino , da cui può essere recuperato utilizzando i comandi di flashback (flashback ... before drop ]. Il nome visualizzato come BIN$... è un po' un regalo. Il trigger viene visualizzato anche con un BIN$... nome, indicando che è presente anche nel cestino e lo saranno anche eventuali indici.

Puoi svuotare il cestino per rimuovere definitivamente gli oggetti in esso contenuti. Per eliminare immediatamente una tabella, senza che vada nel cestino, puoi aggiungere la parola chiave purge al drop comando, come spiegato nella documentazione . Ciò eliminerà immediatamente anche tutti gli indici e i trigger.

Se non fosse stato eliminato automaticamente, il trigger sarebbe comunque irrilevante, poiché non è possibile eseguire alcun DML sulla tabella eliminata, quindi non potrebbe mai essere attivato. Questo è se la tabella l'attivatore è contro è caduto. Il tuo trigger è strano, si sta inserendo nella stessa tabella. Normalmente avresti un trigger su una tabella inserito nella tabella di backup (beh, per un uso dei trigger). In tal caso, l'eliminazione della tabella di backup invaliderebbe il trigger sul tavolo live, ma non lo rilascerebbe. Solo l'eliminazione del tavolo live rilascerebbe l'attivatore sul tavolo live.