So deaktivieren Sie einen Trigger in Oracle

So Deaktivieren Sie Einen Trigger In Oracle



Datenbankauslöser oder kurz Trigger beziehen sich auf gespeicherte Prozeduren, die als Reaktion auf eine Ereignisaktivität innerhalb eines bestimmten Datenbankobjekts ausgeführt werden.

Dies unterscheidet sich von gespeicherten Standardprozeduren, die einen expliziten Aufruf durch den Benutzer erfordern. Da Trigger automatisiert sind, werden sie ausgelöst oder ausgelöst, wenn das angegebene Ereignis eintritt, unabhängig vom verbundenen Benutzer- oder Serverstatus.







Die meisten relationalen Datenbanken unterstützen die Verwendung von Triggern zur Durchführung automatisierter Aufgaben wie das Verhindern ungültiger Transaktionen, das Protokollieren von Ereignissen, das Abrufen und Aufzeichnen von Tabellenzugriffsstatistiken und mehr.



Sobald ein Trigger erstellt wurde, wird er immer dann ausgeführt, wenn das zugehörige Ereignis eintritt. Möglicherweise möchten Sie jedoch vorübergehend oder dauerhaft verhindern, dass ein Trigger ausgeführt wird. Hier kommt die Trigger-Disable-Funktion ins Spiel.



In diesem Beitrag werden die schnellen und einfachen Schritte zum Deaktivieren eines Triggers in einer Oracle-Datenbank erörtert. Wenn Sie neu bei Oracle-Triggern sind und wissen möchten, wie Sie einen erstellen, überprüfen Sie den folgenden Link:





https://linuxhint.com/oracle-create-trigger

Erstellen eines Testtriggers

Bevor wir die Methoden zum Deaktivieren eines Triggers erörtern, lassen Sie uns zu Demonstrationszwecken einen Beispiel-Trigger einrichten.



HINWEIS : In diesem Abschnitt wird nicht behandelt, wie die Datenbank-Trigger definiert oder verwendet werden.

Wir wollen einen Trigger erstellen, der die Benutzeraktivität nach einem Löschvorgang protokolliert. Angenommen, wir haben eine Beispieldatentabelle mit den folgenden Informationen:

Wir müssen zuerst eine Tabelle erstellen, in der wir die Protokolle für jede Löschaktivität speichern.

Das Tabellenschema sieht wie folgt aus:

Tabelle sample_data_logs erstellen (
ID-Nummer,
vorname varchar2(50),
ip_adresse varchar2(20),
btc_address varchar2(50),
credit_card varchar2(50),
Kennung varchar2(40),
delete_date Datum,
gelöscht_von varchar2(20)
);

Als nächstes müssen wir einen Trigger definieren, der nach einem Löschereignis ausgeführt wird. Die Triggerdefinition wird wie folgt bereitgestellt:

Trigger log_user erstellen oder ersetzen
nach löschen
auf sample_data
Für jede Reihe
erklären
action_username varchar2(20);
Start
Benutzer in action_username von dual auswählen;
einfügen in sample_data_logs
Werte (:OLD.id,
:OLD.Vorname,
:OLD.ip_adresse,
:OLD.btc_address,
:OLD.credit_card,
:OLD.Kennung,
Systemdatum,
action_username);
Ende;

Um den Trigger zu testen, führen wir wie gezeigt einen Löschvorgang aus der Tabelle sample_data durch:

aus sample_data löschen, wo id = 1;

Schließlich können wir die Protokolltabelle überprüfen, um sicherzustellen, dass der Löschvorgang aufgezeichnet wurde:

select * from sample_data_logs;

Ausgabe:

Wie wir sehen können, enthält die Tabelle einen Eintrag der vorherigen Daten vor dem Löschen sowie den Benutzernamen, der die Löschaktivität durchgeführt hat, und den Zeitpunkt der Löschung.

In den folgenden Abschnitten zeigen wir, wie Sie den vorherigen Trigger deaktivieren. Stellen Sie zuvor sicher, dass Ihr Zielauslöser funktionsfähig ist und Sie über ausreichende Berechtigungen verfügen, um ihn zu aktivieren oder zu deaktivieren.

Deaktivieren Sie einen Trigger mit PL/SQL

Die erste und einfachste Methode zum Deaktivieren eines Triggers ist die Verwendung einer SQL-Anweisung. Glücklicherweise stellt uns Oracle die ALTER TRIGGER-Anweisung zur Verfügung, deren Syntax wie folgt bereitgestellt wird:

ALTER TRIGGER trigger_name DISABLE;

Um beispielsweise den zuvor erstellten log_user-Trigger zu deaktivieren, können wir Folgendes ausführen:

Trigger log_user deaktivieren;

Nach der Ausführung speichert der Trigger keine Kopie der alten Daten und des Benutzers, der die Löschung durchgeführt hat, wie im Folgenden gezeigt:

aus sample_data löschen, wo id = 2;

Überprüfen Sie die Protokolle:

select * from sample_data_logs;

Ausgabe:

Wie wir sehen können, haben wir immer noch nur einen Datensatz.

Deaktivieren Sie einen Trigger mit SQL Developer

Wir können das SQL Developer-Dienstprogramm verwenden, um einen Trigger in der grafischen Benutzeroberfläche zu deaktivieren. Melden Sie sich zunächst bei SQL Developer an.

Navigieren Sie zum Abschnitt „Trigger“:

Erweitern Sie das Triggerverzeichnis und suchen Sie den Trigger, den Sie deaktivieren möchten. Klicken Sie mit der rechten Maustaste auf den Auslösernamen und wählen Sie „Deaktivieren“.

Bestätigen Sie den Vorgang „Deaktivieren“ und klicken Sie auf „Übernehmen“.

Nach der Deaktivierung graut Oracle den Trigger aus, um anzuzeigen, dass er inaktiv ist.

Fazit

In diesem Artikel wurde untersucht, wie Sie einen Oracle-Trigger mithilfe von PL/SQL-Anweisungen und dem SQL Developer-Dienstprogramm deaktivieren.