CodeGym /Kurse /SQL SELF /Erstellen von Triggern und Prozeduren

Erstellen von Triggern und Prozeduren

SQL SELF
Level 61 , Lektion 3
Verfügbar

Erstellen von Triggern und Prozeduren

Hast du die vorherigen Aufgaben locker gemeistert? Na dann, lass mich dir jetzt etwas Anspruchsvolleres geben. Lass uns dein Wissen über PL-SQL festigen und Prozeduren sowie Trigger schreiben. Bereit?

Prozeduren erstellen

Unten findest du Prozeduren, die du deiner Marktplatz-Datenbank hinzufügen solltest. Jede Prozedur wird erklärt – welche Aufgaben und Geschäftsprozesse sie löst und warum sie sinnvoll ist. Diese Prozeduren automatisieren zentrale Abläufe, verbessern die User Experience, optimieren das Frontend, die Logistik, den Support, das Marketing und die Analytics.

1. Bestellabwicklung mit automatischer Reservierung von Waren

Bestellungen sind der zentrale Vorgang für jeden Marktplatz. Die Prozedur soll nicht nur einen Bestell- und Positionsdatensatz anlegen, sondern auch die Ware im Lager reservieren, die Menge abziehen, den Status setzen, die Zahlung anstoßen und Folgeprozesse (Benachrichtigungen, Logistik) starten. Die Automatisierung dieses Ablaufs reduziert Fehler beim manuellen Eingeben, verhindert Over-Selling und sorgt für konsistente Bestände in Echtzeit.

2. Automatisierte Lagerauffüllung

Um Out-of-Stock und Umsatzverluste zu vermeiden, ist es wichtig, das Lager rechtzeitig aufzufüllen, wenn der Bestand unter einen Schwellenwert fällt. Diese Prozedur prüft alle Warenbestände, vergleicht sie mit dem Minimum und erstellt automatisch Bestellanforderungen oder interne Resupply-Aufträge. Automatisierung verkürzt die Reaktionszeit und entlastet das Operations-Team.

3. Massen-Statusupdate von Bestellungen und Kundenbenachrichtigung

Im Katalog müssen Bestellungen oft massenhaft zwischen Status gewechselt werden (z.B. “bezahlt” → “versendet” oder “versendet” → “abgeschlossen”), je nach Bearbeitungsstand. Die Prozedur aktualisiert die Status aller passenden Bestellungen, schreibt die Änderungshistorie (für Audits) und kann Benachrichtigungen an Kunden auslösen. Das automatisiert die Backoffice-Arbeit und minimiert manuelle Fehler.

4. Massenhafte Anwendung von Rabatten/Promo-Codes auf Produkte

Für Aktionen oder Produkt-Promotions müssen oft Promo-Codes und Rabatte auf ganze Kategorien, Marken oder Produktauswahlen angewendet werden. Die Prozedur setzt Rabatte automatisch, achtet auf Einschränkungen (Datum, Limits), aktualisiert Nutzungscounter und verhindert Duplikate.

5. Automatische Rückerstattung an den Nutzer

Rückgaben und Rückerstattungen sind für das Vertrauen der Kunden extrem wichtig. Die Prozedur prüft den Bestellstatus, die Gültigkeit der Rückgabe, stößt die Rückzahlung an, aktualisiert Status, loggt die Transaktion und benachrichtigt den Nutzer. Alles in einer Transaktion abzuarbeiten, senkt das Risiko von Fehlern und Missbrauch.

6. Neuberechnung der durchschnittlichen Bewertung eines Produkts/Verkäufers

Bei jeder neuen Bewertung, Änderung oder Löschung muss der Durchschnittsrating eines Produkts oder Nutzers aktuell sein. Die Prozedur berechnet und aktualisiert das Feld “avg_rating”/“review_count” sofort, damit Frontend-Queries schneller sind und die Analytics konsistent bleibt.

7. Automatische Deaktivierung von Produkten mit Null-Bestand

Damit der Marktplatz korrekt funktioniert und User keine schlechten Erfahrungen machen, sollten Produkte mit Null-Bestand automatisch ausgeblendet (deaktiviert) werden. Die Prozedur prüft regelmäßig die Lager und den Produktstatus, setzt den Status auf “inaktiv”, loggt die Änderung und hält den Katalog ohne manuelle Kontrolle aktuell.

8. Automatische Zuweisung einer Bestellung an einen Kurier und Update des Lieferstatus

In der Logistik ist es wichtig, schnell und transparent einen Kurier einer Bestellung zuzuweisen, den Lieferstatus zu ändern und alle Aktionen für das Tracking zu speichern. Die Prozedur automatisiert diese Schritte und spart dem Manager manuelle Arbeit.

9. Massenhafte Benachrichtigung der Nutzer (Aktionstrigger, Erinnerungen)

Benachrichtigungen über Sales, Rückgaben, Statusänderungen oder Marketingaktionen sollten massenhaft und nach Bedingungen (aktive Nutzer, lange nicht gekauft, Warenkorb verlassen etc.) versendet werden. Die Prozedur ermöglicht das Auslösen von Push-/E-Mail-Benachrichtigungen für ein bestimmtes Segment.

10. Archivierung veralteter Daten (z.B. abgeschlossene Bestellungen oder inaktive Produkte)

Um die Performance der Datenbank zu erhalten und die Größe der “heißen” Tabellen zu reduzieren, sollten alte Datensätze (alte Bestellungen, archivierte Produkte, alte Support-Tickets) regelmäßig verschoben oder als “archiviert” markiert werden. Die Prozedur erleichtert das Löschen oder Verschieben von Daten und minimiert den manuellen Aufwand für Admins.

Trigger erstellen

1. Logging von Statusänderungen bei Bestellungen

Eine vollständige Historie der Statusänderungen von Bestellungen ist für Audits, Support, Analytics und automatische Benachrichtigungen an User extrem wichtig. Der Trigger legt automatisch einen Eintrag in "order".order_status_log bei jeder Statusänderung an, sodass Entwickler die Änderungshistorie nicht manuell im Code pflegen müssen.

2. Automatische Historisierung von Preisänderungen bei Produktvarianten

Die Preisänderungshistorie für SKUs ist wichtig für Analytics, Anzeige des “alten Preises”, Aktions-Tracking und automatische Rabatt-Benachrichtigungen. Der Trigger speichert jede Änderung des Felds price in der Tabelle product.variant in die Historie product.price_history. So bleibt die Preisdynamik lückenlos erhalten.

3. Synchronisierung des Lagerbestands bei Änderungen an Lagerartikeln

Jede Änderung am Lagerbestand (z.B. Inventur, Zugang, Abgang) soll automatisch das Feld last_updated aktualisieren, damit Analytics und Datenaktualität stimmen. Außerdem kann so ein Trigger eine automatische Prüfung auf Mindestbestand und einen Auto-Order anstoßen.

4. Automatische Deaktivierung von Produktvarianten mit Null-Bestand

Damit niemand ein nicht vorhandenes Produkt kauft, wird bei Null-Bestand auf allen Lagern das Feld is_active für die Produktvariante automatisch auf FALSE gesetzt. Das reduziert negative Bewertungen und Stornos.

5. Logging von Admin-Login-Versuchen (Security)

Die Kontrolle von Admin-Logins ist ein Schlüssel zur IT-Sicherheit. Alle Login-Versuche (erfolgreich und fehlgeschlagen) werden automatisch in admin.login_attempt per BEFORE INSERT Trigger gespeichert. So erkennt man Angriffe, Hacks oder verdächtige Aktivitäten frühzeitig.

6. Logging von wichtigen Produktänderungen und automatische Historisierung

Alle wichtigen Änderungen am Produkt (Status, Beschreibung, Name) sollten für Audits, Fehlerwiederherstellung und Missbrauchskontrolle gespeichert werden. Der Trigger legt einen Eintrag in product.status_history bei Statusänderungen an und kann für andere Felder erweitert werden.

7. Automatische Aktualisierung des Promo-Code-Nutzungscounters

Die korrekte Zählung der Promo-Code-Nutzung ist wichtig, um Aktionen zu begrenzen und Missbrauch zu verhindern. Der Trigger erhöht bei jedem Insert in marketing.promo_usage den Counter used_count in marketing.promo_code und verhindert Inkonsistenzen.

8. Update des Wallet-Guthabens bei Transaktionen

Damit das Bonus-/Cashback-Wallet des Users immer korrekt angezeigt wird, sollte jede Transaktion automatisch das Endguthaben in payment.wallet aktualisieren. Ein Trigger auf neue Transaktionen minimiert Datenverluste oder Fehler durch Bugs im Code.

9. Automatische Setzung von "primärer" Adresse, E-Mail oder Telefonnummer

Damit ein User immer eine primäre E-Mail/Telefon/Adresse hat (wichtig für Zugangswiederherstellung und Kommunikation), setzt der Trigger automatisch is_primary=TRUE für den ersten Eintrag, falls keiner existiert, und stellt die Einzigartigkeit pro User sicher.

10. Durchschnittsbewertung eines Produkts beim Hinzufügen einer Bewertung berechnen

Um den “Durchschnittsrating” auf der Produktkarte und in der Suche schnell anzuzeigen, ist es effizienter, diesen Wert bei jedem neuen Review zu aktualisieren, statt ihn immer per Query zu berechnen. Der Trigger hält das Cache-Feld avg_rating und/oder review_count in product.product aktuell.

11. Automatische Setzung des Veröffentlichungsdatums von Content

Für Artikel, Seiten oder andere Veröffentlichungen ist es beim Statuswechsel auf “veröffentlicht” wichtig, das Feld published_at korrekt zu setzen. Das sorgt für Konsistenz im CMS: User und Admins sehen das genaue Veröffentlichungsdatum und das Frontend braucht keine manuellen Updates.

12. Logging aller Support-Events (Statusänderungen von Tickets)

Eine vollständige Historie aller Support-Anfragen und Statusänderungen ermöglicht die Bewertung des Supports, Analytics und Transparenz für User. Der Trigger schreibt automatisch einen Eintrag in support.ticket_status_log bei Statuswechseln.

Hinweis

Das Hinzufügen dieser Trigger erhöht die Zuverlässigkeit, Transparenz und Automatisierung der wichtigsten Geschäftsprozesse deines Marktplatzes massiv, entlastet den Anwendungscode und sorgt für Datenintegrität direkt auf Datenbankebene. Sie spiegeln Best Practices beim Design relationaler Systeme für große E-Commerce-Projekte wider.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION