Trigger
Regeln, die innerhalb der Datenbank bei jedem Einfügen, Ändern oder Löschen laufen — in einem visuellen Ablauf gezeichnet und auf die Engine angewendet.
Ein Trigger ist eine Regel, die innerhalb der Datenbank lebt und von selbst auslöst, sobald eine Zeile einer Tabelle eingefügt, geändert oder gelöscht wird. Er hängt nicht davon ab, wer geschrieben hat: Ob der Schreibvorgang von einem Bildschirm, von einer API, von einem Skript oder von einer anderen mit derselben Datenbank verbundenen Anwendung kommt — der Trigger läuft.
Das ist das Argument für Trigger, und zugleich die Vorsicht, die sie verlangen — Logik, die läuft, ohne dass jemand sie aufruft, ist Logik, die niemand geschehen sieht.
Wo die Trigger leben
Im Baum der Datenquelle, in der Gruppe Programmierung, neben den Funktionen / Prozeduren:

Ein Klick auf einen Trigger öffnet ihn in einem Tab des Arbeitsbereichs, mit seinem gezeichneten Ablauf.
Nota
Nicht alle Datenbank-Engines unterstützen so gezeichnete Trigger. Die Plattform bietet nur an, was die verbundene Engine kann: Wenn Neuer Trigger im Menü der Datenquelle nicht erscheint, dann weil diese Engine ihn nicht unterstützt. Außerhalb der Plattform angelegte Trigger werden weiterhin gelistet, markiert als Externer Trigger — unterstützt den Canvas nicht (nur SQL-Bearbeitung).

Einen Trigger anlegen
- Fahren Sie mit der Maus über die Datenquelle und öffnen Sie das Menü ⋯.
- Wählen Sie Neuer Trigger. Es öffnet sich der Dialog mit den ersten Angaben zum Trigger — den Ablauf bauen Sie danach im Canvas.
- Füllen Sie aus:
| Feld | Was es ist |
|---|---|
| Name | Der Name des Triggers in der Datenbank. Die vorgeschlagene Konvention ist trg_meine_tabelle. |
| Tabelle | Die überwachte Tabelle. |
| Zeitpunkt | BEFORE (bevor die Zeile geschrieben wird) oder AFTER (danach). |
| Ereignisse | INSERT, UPDATE, DELETE — mindestens eines. Manche Engines akzeptieren mehrere im selben Trigger, andere nur eines. |
- Bestätigen Sie mit Erstellen und Canvas öffnen.
Der Trigger entsteht als Entwurf: Er existiert bereits in der Plattform, ist aber noch nicht auf die Datenbank angewendet. Solange er Entwurf ist, kennzeichnet ihn der Baum als solchen.
Zeitpunkt und Ereignisse in der Praxis
| Wahl | Wofür |
|---|---|
| BEFORE INSERT/UPDATE | Werte normalisieren oder vervollständigen, bevor sie gespeichert werden — einen Code in Großbuchstaben setzen, ein abgeleitetes Feld füllen. |
| AFTER INSERT/UPDATE/DELETE | Auf das reagieren, was schon geschehen ist — eine Historie schreiben, eine Summe in einer anderen Tabelle aktualisieren. |
Die Werte der Zeile stehen je nach Ereignis zur Verfügung: Neue Werte (NEW)
gibt es beim INSERT und beim UPDATE; Alte Werte (OLD) erscheinen nur,
wenn der Trigger auf UPDATE oder DELETE hört — bei einem INSERT gibt es
keine alte Zeile zu zeigen.
Der Canvas des Triggers
Der Ablauf wird auf einem Canvas gezeichnet, und der Hinweis oben fasst die Geste zusammen: Ziehen Sie Funktionen/Prozeduren aus dem Baum auf den Canvas; ein Doppelklick auf eine Box konfiguriert deren Outputs/Inputs.
In der Leiste über dem Canvas stehen von links nach rechts:
| Button | Was er tut |
|---|---|
| Einstellungen | Öffnet Name, Tabelle, Zeitpunkt und Ereignisse des Triggers erneut. |
| (die Zusammenfassung) | Der Name, die Tabelle, der Zeitpunkt und die Ereignisse, immer im Blick. |
| Ausdruck | Fügt dem Ablauf einen Ausdrucksknoten hinzu. |
| SQL anzeigen | Zeigt den kompilierten Trigger, ohne etwas auszuführen. |
| Speichern und in der DB anwenden | Speichert den Trigger und wendet ihn auf die Engine an. |
Die Box der Tabelle — was in den Ablauf eingeht
Die erste Box des Canvas ist die Tabelle: Aus ihr kommen die Werte der Zeile, die den Trigger ausgelöst hat. Machen Sie einen Doppelklick darauf, um die Outputs des Triggers zu öffnen und zu wählen, was dieser Trigger dem Ablauf bereitstellt: einzelne Spalten, die ganze Zeile (JSON) oder beides.
- Neue Werte (NEW) — die Zeile, wie sie wird.
- Alte Werte (OLD) — die Zeile, wie sie war.
- In beiden Fällen können Sie neben den einzelnen Spalten auch die ganze Zeile (JSON) bereitstellen — nützlich, um alles auf einmal an eine Historien-Funktion zu übergeben.
Jede gewählte Ausgabe wird zu einem Port an der Box, bereit, verbunden zu werden.
Die Funktionen und die Prozeduren
Die Arbeit wird in einem Trigger von Funktionen und Prozeduren erledigt, die in der Datenbank bereits existieren. Ziehen Sie sie aus dem Baum (Programmierung ▸ Funktionen / Prozeduren) auf den Canvas: Jede wird zu einer Box mit einem Parameter pro Eingang.
- Verbinden Sie einen Port der Tabelle mit dem Parameter, den er speist — der Parameter zeigt sich fortan als verbunden.
- Ein Parameter ohne Verbindung behält seinen Standardwert.
- Auch Funktionen geben einen Wert zurück: Der Rückgabe-Port kann eine andere Box speisen und so Schritte verketten.
- Das Menü der Box selbst enthält Aus dem Ablauf entfernen.
Um eine Verbindung rückgängig zu machen, klicken Sie auf die Linie: Diese Verbindung entfernen? Der Parameter erhält diesen Wert nicht mehr.
Die Ausdrucksknoten
Zwischen einem Port und einem Parameter taugt der Wert nicht immer so, wie er
ist. Der Button Ausdruck fügt einen Knoten hinzu, der Werte
verfeinert/umwandelt: Sie deklarieren Inputs (mit + Input), verbinden
Ports damit und schreiben den SQL-Ausdruck mit {a}, {b}… für die
verbundenen Inputs — zum Beispiel upper({a}) || '-' || {b}. Das Ergebnis kommt
aus dem Port des Knotens und geht weiter, wohin Sie wollen.
Machen Sie einen Doppelklick auf den Knoten, um ihn zu konfigurieren (die Box selbst sagt Doppelklick zum Bearbeiten…, solange sie leer ist).
Das SQL vor dem Anwenden ansehen
SQL anzeigen öffnet die Vorschau — SQL des Triggers (Vorschau) — mit dem Hinweis, auf den es ankommt: Mit Ihren aktuellen Änderungen kompiliert — es wurde nichts ausgeführt. Prüfen und anwenden, wann immer Sie wollen.
Das ist der Sicherheitsschritt: Sie sehen genau, was in der Datenbank angelegt wird, können es kopieren, es demjenigen zeigen, der die Engine administriert, und erst danach anwenden. Derselbe Dialog hat den Button Speichern und in der DB anwenden griffbereit.
Den Trigger anwenden
Speichern und in der DB anwenden tut beides: Es speichert die Zeichnung und legt den Trigger in der Engine an. Wenn es gut geht, bestätigt die Plattform: Trigger in der Datenbank angewendet.
Vor dem Anwenden wird die Zeichnung geprüft. Die Ablehnungen sind eindeutig:
| Meldung | Was fehlt |
|---|---|
| Geben Sie dem Trigger einen Namen (Einstellungen). | Der Name. |
| Wählen Sie die Tabelle (Einstellungen). | Die überwachte Tabelle. |
| Wählen Sie mindestens ein Ereignis (Einstellungen). | Mindestens eines von INSERT/UPDATE/DELETE. |
| Der Canvas enthält keine Funktion/Prozedur. | Ein leerer Ablauf tut nichts — ziehen Sie mindestens eine Funktion hinein. |
| Es gibt einen Ausdrucksknoten ohne definierten Ausdruck. | Ein leerer Ausdrucksknoten. |
Atenção
Einen Trigger anzuwenden ist ein Schreibvorgang in der verbundenen Datenbank, mit sofortiger Wirkung auf alle Schreibvorgänge dieser Tabelle — einschließlich derer, die bereits liefen. Sehen Sie sich in einem Produktivsystem zuerst das SQL an und wenden Sie es zur vereinbarten Zeit an.
Einen Trigger löschen
Das Menü ⋯ des Triggers im Baum enthält Löschen, mit Bestätigung — Den Trigger „…“ löschen? — und es ist endgültig: Der Trigger verlässt die Datenbank.
Ansehen, was in der Datenbank ist
Die SQL-Konsole unter dem Modelldiagramm ist der Ort, um die Wirkung eines Triggers zu prüfen: Schreiben Sie eine Abfrage, Ausführen, und sehen Sie die echten Zeilen. Hier wird auch inspiziert, was schon da war, bevor Sie kamen.

Trigger, Skript oder Workflow?
Alle drei automatisieren, und die richtige Wahl erspart Monate der Verwirrung:
| Werkzeug | Läuft… | Gut für |
|---|---|---|
| Trigger | Innerhalb der Datenbank, bei jedem Schreibvorgang der Tabelle. | Regeln, die für alle Schreibvorgänge gelten müssen: Historie, abgeleitete Felder, Summen. |
| Skript | Außerhalb der Datenbank, von Hand, geplant oder als Schritt einer API. | Schwere Arbeit, Integrationen, Dateien, Versand — alles, was dauert oder mit der Außenwelt spricht. |
| Workflow | Als Prozess mit Schritten, Entscheidungen und menschlichen Aufgaben. | Freigaben, Abläufe mit Menschen dazwischen, Wartezeiten. |
Dica
Wenn die Logik über die Daten geht und nicht fehlschlagen darf, ist es ein Trigger. Wenn die Logik über das Geschäft geht und jemand sie geschehen sehen muss, ist sie es nicht: Ein Skript oder ein Workflow hinterlassen eine Spur, laufen mit Historie und erklären sich im Radar von selbst.
Warum nicht…?
- Warum erscheint Neuer Trigger nicht im Menü der Datenquelle? Die verbundene Engine unterstützt keine im Canvas gezeichneten Trigger. Sie können sie weiterhin in SQL anlegen, und sie erscheinen im Baum als externe Trigger.
- Warum sagt der Trigger weiterhin, er sei ein Entwurf? Er wurde angelegt, aber noch nicht angewendet. Öffnen Sie ihn und nutzen Sie Speichern und in der DB anwenden.
- Warum fehlt der Ausgang Alte Werte (OLD)? Der Trigger hört weder auf
UPDATEnoch aufDELETE. Bei einemINSERTgibt es keine alte Zeile. - Warum kann ich einen Port nicht mit einem Parameter verbinden? Nicht jede Verbindung ergibt Sinn — prüfen Sie, ob Sie einen Ausgang (rechts an der Box) mit einem Eingang (links an der anderen) verbinden.
- Warum tut der Trigger nichts? Ein Ablauf ohne Funktionen erzeugt gar keine
Arbeit: Die Kompilierung weist ihn zurück. Und prüfen Sie den Zeitpunkt —
ein
BEFOREund einAFTERsehen nicht dasselbe. - Warum sind die Schreibvorgänge nach dem Anlegen des Triggers langsam geworden? Der Trigger läuft bei jeder geschriebenen Zeile. Wenn er schwere Arbeit aufruft, geschieht diese Arbeit fortan bei jedem Einfügen — in solchen Fällen ist der richtige Ort ein geplantes Skript.