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