Routinen und Trigger
Gespeicherte Prozeduren und Funktionen
Prozeduren und Funktionen stehen in der Seitenleiste unter Funktionen. Rechtsklick und Routinen-Editor öffnen zeigt die Definition und öffnet sie zum Bearbeiten.
Der Editor zeigt das DDL der Routine so, wie der Server es meldet. Speichern ersetzt die Definition.
Routinen im SQL-Editor schreiben
Sie können Routinen auch aus einem normalen SQL-Editor-Tab anlegen. Die Anweisungsaufteilung versteht DELIMITER, deshalb wird ein Rumpf voller Semikolons als eine einzige Anweisung ausgeführt statt zerhackt zu werden:
DELIMITER $$
CREATE PROCEDURE monatssummen(IN jahr_in INT)
BEGIN
SELECT MONTH(erstellt_am) AS monat, SUM(summe) AS summe
FROM bestellungen
WHERE YEAR(erstellt_am) = jahr_in
GROUP BY MONTH(erstellt_am);
END$$
DELIMITER ;Ohne diese Behandlung würde das ; nach jeder inneren Anweisung die CREATE PROCEDURE zu früh beenden und der Server sie zurückweisen — der übliche Grund, warum eine Routine, die in der Konsole läuft, in einem grafischen Client scheitert.
Trigger
Rechtsklick auf eine Datenbank und Trigger öffnet den Trigger-Editor für diese Datenbank. Er listet die dort definierten Trigger und zeigt deren DDL.
Trigger lassen sich ansehen, bearbeiten und löschen. Wie bei Sichten nimmt ein gelöschter Trigger nichts weiter mit.
Trigger und Massenoperationen
Ein Trigger feuert pro Zeile. Während eines großen Imports oder einer Datenübertragung kann das aus einer schnellen Operation eine langsame machen, und es kann Arbeit doppeln, die die Übertragung ohnehin erledigt. Die Datenübertragung hat genau deshalb die Option Trigger einbeziehen — damit Sie entscheiden.
Wo Routinen sonst auftauchen
- Die Datenübertragung kann Sichten, Prozeduren und Funktionen in eine andere Datenbank kopieren — auch auf ein anderes System, wo der Dialekt danach angepasst werden muss.
- Dump SQL file an einer Datenbank und jede Sicherung enthalten Sichten, Prozeduren und Funktionen — angelegt nach den Tabellen, Sichten in der Reihenfolge ihrer Abhängigkeiten. Der Dump einzelner Tabellen enthält sie nicht.
- Dump SQL file an einer Tabelle — und jede Sicherung der Datenbank — enthält die Trigger der Tabelle. Sie stehen hinter den Zeilen, sodass das Einspielen der Daten sie nicht auslöst; PostgreSQL-Trigger kommen mit ihrer Triggerfunktion, und deaktivierte Trigger bleiben deaktiviert.
