Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Was passiert mit abhängigen Triggern, wenn die Tabelle gelöscht wird?

Die Tabelle wurde gelöscht, befindet sich aber im Papierkorb , aus der es mit den Flashback-Befehlen wiederhergestellt werden kann (flashback ... before drop ]. Der Name wird als BIN$... angezeigt ist ein bisschen verschenkt. Der Trigger wird auch mit einem BIN$... angezeigt Name, der angibt, dass er sich ebenfalls im Papierkorb befindet, und alle Indizes ebenfalls.

Sie können den Papierkorb leeren, um die darin enthaltenen Objekte dauerhaft zu entfernen. Um eine Tabelle sofort zu löschen, ohne dass sie in den Papierkorb wandert, können Sie das Schlüsselwort purge hinzufügen zum drop Befehl, wie in der Dokumentation erklärt . Dadurch werden auch alle Indizes und Trigger sofort gelöscht.

Wenn es nicht automatisch gelöscht würde, wäre der Trigger ohnehin irrelevant, da Sie keine DML auf der gelöschten Tabelle ausführen könnten, sodass es niemals ausgelöst werden könnte. Das ist, wenn die Tabelle, gegen die der Trigger gegen ist ist gefallen. Ihr Trigger ist seltsam, er fügt in dieselbe Tabelle ein. Normalerweise würden Sie einen Trigger auf einer Tabelle in Ihre Backup-Tabelle einfügen (nun, für eine Verwendung von Triggern). In diesem Fall würde das Löschen der Sicherungstabelle ungültig machen den Auslöser am Live-Tisch, würde ihn aber nicht fallen lassen. Nur das Löschen der Live-Tabelle würde den Trigger auf der Live-Tabelle löschen.