EMZETT.
Login

Gespeicherte Prozeduren und Trigger: Logik in der Datenbank

Kurz: Stored Procedures sind Programme, die in der Datenbank gespeichert sind und aufgerufen werden; Trigger laufen automatisch, wenn Daten eingefügt, geändert oder gelöscht werden.

Genauer: Normalerweise sendet eine Anwendung einzelne SQL-Befehle an die Datenbank. Man kann Logik aber auch in der Datenbank ablegen. Das hat Vor- und Nachteile, die man abwägen sollte.

Im Detail

Stored Procedure und Funktion

Ein benanntes Programm aus SQL und Ablaufsteuerung (Schleifen, Bedingungen), das mit CALL oder SELECT aufgerufen wird. Beispiel in PostgreSQL:

CREATE FUNCTION bestellung_anlegen(kunde int, betrag numeric)
RETURNS int LANGUAGE plpgsql AS $$
DECLARE neue_id int;
BEGIN
  INSERT INTO bestellungen (kunde_id, betrag) VALUES (kunde, betrag)
  RETURNING id INTO neue_id;
  UPDATE kunden SET umsatz = umsatz + betrag WHERE id = kunde;
  RETURN neue_id;
END $$;

Sprachen: PL/pgSQL (PostgreSQL), T-SQL (SQL Server), PL/SQL (Oracle), MySQL-Prozeduren.

Trigger

Ein Trigger wird automatisch vor oder nach INSERT, UPDATE oder DELETE ausgeführt:

CREATE TRIGGER aendern_zeit
BEFORE UPDATE ON artikel
FOR EACH ROW EXECUTE FUNCTION setze_aenderungszeit();

Typische Einsatzfälle: Änderungszeit setzen, Audit-Protokolle schreiben, abgeleitete Werte aktuell halten, Regeln prüfen, die ein einfacher Constraint nicht abdeckt.

Vorteile

  • Weniger Netzwerkverkehr: ein Aufruf statt vieler.
  • Logik an einem Ort, unabhängig davon, welche Anwendung auf die Daten zugreift.
  • Die Datenbank garantiert Regeln, auch wenn eine Anwendung sie vergisst.
  • Ausführung in einer Transaktion mit Datennähe.

Nachteile und Alternativen

Geschäftslogik in der Datenbank ist schwerer zu testen, zu versionieren und zu debuggen, bindet an einen Hersteller und kann Lastspitzen auf dem schwer skalierbaren Datenbankserver erzeugen. Versteckte Wirkungen von Triggern überraschen Entwickler. Viele Teams legen die Logik in die Anwendung und nutzen in der Datenbank nur Constraints, Indizes und einfache Trigger (Audit, Zeitstempel). Änderungen an Prozeduren gehören wie Code in Migrationen und Versionskontrolle.

Siehe auch: SQL, Transaktionen und ACID, Datenbank-Migration, Audit-Log