PostgreSQL CREATE TRIGGER

Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie die PostgreSQL CREATE TRIGGER-Anweisung verwenden, um einen Trigger zu erstellen.

Um einen neuen Trigger in PostgreSQL zu erstellen, folgen Sie diesen Schritten:

  • Erst erstellen Sie eine Trigger-Funktion mit der CREATE FUNCTION-Anweisung.
  • Zweitens, binden Sie die Trigger-Funktion an eine Tabelle, indem Sie die CREATE TRIGGER-Anweisung verwenden.

Wenn Sie mit der Erstellung einer benutzerdefinierten Funktion nicht vertraut sind, können Sie den PL/pgSQL-Abschnitt lesen.

Erstellen Sie eine Trigger-Funktion-Syntax

Eine Trigger-Funktion ist ähnlich wie eine normale benutzerdefinierte Funktion. Eine Trigger-Funktion nimmt jedoch keine Argumente entgegen und hat einen Rückgabewert vom Typ trigger.

Das Folgende veranschaulicht die Syntax der Erstellung einer Trigger-Funktion:

Code language: SQL (Structured Query Language) (sql)

Beachten Sie, dass Sie eine Trigger-Funktion mit jeder von PostgreSQL unterstützten Sprache erstellen können. In diesem Tutorial werden wir PL/pgSQL verwenden.

Eine Triggerfunktion erhält Daten über ihre aufrufende Umgebung durch eine spezielle Struktur namens TriggerData, die einen Satz lokaler Variablen enthält.

Zum Beispiel repräsentieren OLD und NEW die Zustände der Zeile in der Tabelle vor oder nach dem auslösenden Ereignis.

PostgreSQL bietet auch andere lokale Variablen, denen TG_ vorangestellt ist, wie TG_WHEN und TG_TABLE_NAME.

Nachdem Sie eine Triggerfunktion definiert haben, können Sie sie an ein oder mehrere Triggerereignisse wie INSERT, UPDATE und DELETE binden.

Einführung in PostgreSQL CREATE TRIGGER-Anweisung

Die CREATE TRIGGER-Anweisung erstellt einen neuen Trigger. Die folgende Abbildung zeigt die grundlegende Syntax der CREATE TRIGGER-Anweisung:

Code language: SQL (Structured Query Language) (sql)

In dieser Syntax:

Erst geben Sie den Namen des Triggers nach den TRIGGER-Schlüsselwörtern an.

Zweitens geben Sie das Timing an, das den Trigger auslöst. Es kann BEFORE oder AFTER sein, wenn ein Ereignis eintritt.

Drittes, gib das Ereignis an, das den Trigger auslöst. Das Ereignis kann INSERT , DELETE, UPDATE oder TRUNCATE sein.

Viertens: Geben Sie nach dem Schlüsselwort ON den Namen der Tabelle an, die mit dem Trigger verbunden ist.

Fünftens: Geben Sie den Typ des Triggers an, der sein kann:

  • Trigger auf Zeilenebene, der durch die FOR EACH ROW-Klausel angegeben wird.
  • Trigger auf Satzebene, der durch die FOR EACH STATEMENT-Klausel angegeben wird.

Ein Trigger auf Zeilenebene wird für jede Zeile ausgelöst, während ein Trigger auf Anweisungsebene für jede Transaktion ausgelöst wird.

Angenommen, eine Tabelle hat 100 Zeilen und zwei Trigger, die ausgelöst werden, wenn ein DELETE-Ereignis eintritt.

Wenn die DELETE-Anweisung 100 Zeilen löscht, wird der Trigger auf Zeilenebene 100 Mal ausgelöst, einmal für jede gelöschte Zeile. Ein Trigger auf Anweisungsebene wird dagegen einmal ausgelöst, unabhängig davon, wie viele Zeilen gelöscht werden.

Schließlich geben Sie den Namen der Triggerfunktion nach den Schlüsselwörtern EXECUTE PROCEDURE an.

PostgreSQL CREATE TRIGGER Beispiel

Die folgende Anweisung erstellt eine neue Tabelle mit dem Namen employees:

Code language: SQL (Structured Query Language) (sql)

Angenommen, wenn sich der Name eines Mitarbeiters ändert, möchten Sie die Änderungen in einer separaten Tabelle mit dem Namen employee_audits protokollieren:

Code language: SQL (Structured Query Language) (sql)

Erstellen Sie zunächst eine neue Funktion namens log_last_name_changes:

Code language: SQL (Structured Query Language) (sql)

Die Funktion fügt den alten Nachnamen in die Tabelle employee_audits ein, einschließlich der Mitarbeiter-ID, des Nachnamens und des Zeitpunkts der Änderung, wenn sich der Nachname eines Mitarbeiters ändert.

Die OLD steht für die Zeile vor der Aktualisierung, während die NEW für die neue Zeile steht, die aktualisiert wird. OLD.last_name gibt den Nachnamen vor der Aktualisierung und NEW.last_name den neuen Nachnamen zurück.

Zweitens binden Sie die Triggerfunktion an die Tabelle employees. Der Triggername ist last_name_changes. Bevor der Wert der Spalte last_name aktualisiert wird, wird die Triggerfunktion automatisch aufgerufen, um die Änderungen zu protokollieren.

Code language: SQL (Structured Query Language) (sql)

Drittens, fügen Sie einige Zeilen in die Tabelle employees ein:

Code language: SQL (Structured Query Language) (sql)

Viertens, untersuchen Sie den Inhalt der Tabelle employees:

Code language: SQL (Structured Query Language) (sql)

Angenommen, dass Lily Bush ihren Nachnamen in Lily Brown ändert.

Fünftens, aktualisiere Lilys Nachnamen auf den neuen Namen:

Code language: SQL (Structured Query Language) (sql)

Siebtens, überprüfe, ob der Nachname von Lily aktualisiert wurde:

Code language: SQL (Structured Query Language) (sql)

Wie du aus der Ausgabe sehen kannst, wurde Lilys Nachname aktualisiert.

Achtes, überprüfen Sie den Inhalt der Tabelle employee_audits:

Code language: SQL (Structured Query Language) (sql)

Die Änderung wurde in der Tabelle employee_audits durch den Trigger protokolliert.

In diesem Tutorial haben Sie gelernt, wie man den PostgreSQL CREATE TRIGGER verwendet, um einen neuen Trigger zu erstellen.

  • War dieses Tutorial hilfreich?
  • JaNein

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.