Heim > Datenbank > MySQL-Tutorial > MySQL-Trigger anhand von Beispielen erklärt: Datenbankaktionen automatisieren

MySQL-Trigger anhand von Beispielen erklärt: Datenbankaktionen automatisieren

Susan Sarandon
Freigeben: 2024-12-20 16:15:13
Original
945 Leute haben es durchsucht

MySQL Triggers Explained with Examples: Automating Database Actions

MySQL-Trigger anhand von Beispielen erklärt: Datenbankaktionen automatisieren

MySQL-Trigger sind eine leistungsstarke Funktion, die es Ihnen ermöglicht, automatisch eine bestimmte Aktion in der Datenbank als Reaktion auf bestimmte Ereignisse in einer Tabelle auszuführen, wie z. B. INSERT, UPDATE oder LÖSCHEN. Trigger sind nützlich, um Geschäftsregeln durchzusetzen, die Datenintegrität aufrechtzuerhalten oder Änderungen zu protokollieren, ohne dass diese Aktionen explizit im Anwendungscode verwaltet werden müssen.

In diesem Leitfaden erklären wir, was Trigger sind, wie sie funktionieren und stellen praktische Beispiele bereit, die Ihnen helfen, ihre Verwendung in MySQL zu verstehen.


Was sind MySQL-Trigger?

Ein Trigger ist eine Reihe von SQL-Anweisungen, die von MySQL automatisch ausgeführt (oder „ausgelöst“) werden, wenn ein bestimmtes Ereignis in einer Tabelle auftritt. Das Ereignis könnte eines der folgenden sein:

  • INSERT: Wird nach einem Einfügevorgang ausgelöst.
  • UPDATE: Wird nach einem Aktualisierungsvorgang ausgelöst.
  • LÖSCHEN: Wird nach einem Löschvorgang ausgelöst.

Trigger können so definiert werden, dass sie entweder VOR oder NACH dem Ereignis ausgeführt werden, was Ihnen Flexibilität bei der Handhabung Ihrer Daten gibt.

Syntax zum Erstellen von Triggern

Die allgemeine Syntax zum Erstellen eines Triggers in MySQL lautet wie folgt:

CREATE TRIGGER trigger_name
    trigger_time trigger_event
    ON table_name
    FOR EACH ROW
    trigger_body;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • trigger_name: Name des Triggers.
  • trigger_time: Kann VOR oder NACH dem Ereignis sein.
  • trigger_event: Kann INSERT, UPDATE oder DELETE sein.
  • Tabellenname: Der Name der Tabelle, mit der der Trigger verknüpft ist.
  • trigger_body: Die SQL-Anweisungen, die ausgeführt werden, wenn der Trigger ausgelöst wird.

Trigger-Timing: VORHER vs. NACHHER

  • VOR Trigger: Die Trigger-Aktion wird vor dem auslösenden Ereignis ausgeführt (z. B. vor einem Einfüge-, Aktualisierungs- oder Löschvorgang). Dadurch können Sie die Daten ändern, bevor sie in die Tabelle übernommen werden.

  • NACH Trigger: Die Trigger-Aktion wird nach dem Ereignis ausgeführt (z. B. nachdem ein Datensatz eingefügt, aktualisiert oder gelöscht wurde). Dies ist nützlich, wenn Sie Aktionen basierend auf den an den Daten vorgenommenen Änderungen ergreifen möchten, wie z. B. die Protokollierung.


Beispiele für MySQL-Trigger

1. Beispiel für einen Trigger einfügen: Standardwerte automatisch festlegen

Angenommen, wir haben eine Tabelle namens „Mitarbeiter“, die Mitarbeiterinformationen enthält, einschließlich einer Spalte „created_at“. Wir können einen AFTER INSERT-Trigger erstellen, um das Feld „created_at“ automatisch auf den aktuellen Zeitstempel zu setzen, wenn ein neuer Datensatz eingefügt wird.

CREATE TRIGGER trigger_name
    trigger_time trigger_event
    ON table_name
    FOR EACH ROW
    trigger_body;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

In diesem Beispiel:

  • Der Trigger wird NACH DEM EINFÜGEN auf der Mitarbeitertabelle ausgeführt.
  • Das Schlüsselwort NEW wird verwendet, um auf die neu eingefügte Zeile zu verweisen. NEW.id stellt die ID der neu eingefügten Zeile dar.
  • Der Trigger aktualisiert die Spalte „created_at“ des neu eingefügten Datensatzes auf den aktuellen Zeitstempel.

2. Beispiel für einen Aktualisierungsauslöser: Automatische Berechnung eines aktualisierten Werts

Stellen Sie sich eine Tabelle „Produkte“ mit den Spalten „Preis“ und „Rabatt“ vor und Sie möchten das Feld „discounted_price“ automatisch aktualisieren, wenn der Preis aktualisiert wird.

CREATE TRIGGER set_created_at
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
    UPDATE employees SET created_at = NOW() WHERE id = NEW.id;
END;
Nach dem Login kopieren
Nach dem Login kopieren

In diesem Beispiel:

  • Der Trigger wird NACH UPDATE auf der Produkttabelle ausgeführt.
  • NEW.price bezieht sich auf den aktualisierten Preis und OLD.price bezieht sich auf den vorherigen Wert.
  • Wenn sich der Preis geändert hat (NEW.price <> OLD.price), aktualisiert der Trigger den discounted_price basierend auf dem neuen Preis und Rabatt.

3. Beispiel für einen Löschauslöser: Verhindern der Löschung kritischer Daten

Sie können Trigger verwenden, um Geschäftsregeln durchzusetzen, beispielsweise um das Löschen bestimmter Zeilen zu verhindern. Beispielsweise möchten Sie in einer Mitarbeitertabelle möglicherweise das Löschen von Mitarbeitern verhindern, die als kritisch gekennzeichnet sind.

CREATE TRIGGER update_discounted_price
AFTER UPDATE ON products
FOR EACH ROW
BEGIN
    IF NEW.price <> OLD.price THEN
        UPDATE products SET discounted_price = NEW.price * (1 - NEW.discount / 100) WHERE id = NEW.id;
    END IF;
END;
Nach dem Login kopieren

In diesem Beispiel:

  • Der Trigger wird VOR DEM LÖSCHEN auf der Mitarbeitertabelle ausgeführt.
  • Das Schlüsselwort OLD bezieht sich auf die Daten der Zeile vor dem Löschen.
  • Wenn die Spalte is_critical auf 1 gesetzt ist, löst der Trigger mithilfe der SIGNAL-Anweisung einen Fehler aus und verhindert so das Löschen.

4. Beispiel für einen Auslöser einfügen: Audit-Protokolle erstellen

Trigger können zu Protokollierungszwecken verwendet werden, beispielsweise zum Führen eines Prüfprotokolls für Einfügungen in eine Tabelle. Hier ist ein Beispiel, das jeden neuen Mitarbeiter, der zur Mitarbeitertabelle hinzugefügt wird, in einer audit_log-Tabelle protokolliert.

CREATE TRIGGER prevent_delete_critical_employee
BEFORE DELETE ON employees
FOR EACH ROW
BEGIN
    IF OLD.is_critical = 1 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot delete critical employee';
    END IF;
END;
Nach dem Login kopieren

In diesem Beispiel:

  • Der Trigger wird NACH DEM EINFÜGEN auf der Mitarbeitertabelle ausgeführt.
  • Der Trigger fügt einen Datensatz in die Tabelle audit_log ein und protokolliert die Aktion (INSERT), den Tabellennamen (employees), die ID des eingefügten Mitarbeiters (NEW.id) und den Zeitstempel (NOW()).

Auslöser verwalten

  • Trigger anzeigen: Sie können die vorhandenen Trigger in einer Datenbank anzeigen, indem Sie die Tabelle information_schema.triggers abfragen:
CREATE TRIGGER trigger_name
    trigger_time trigger_event
    ON table_name
    FOR EACH ROW
    trigger_body;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • Drop a Trigger: Wenn Sie einen Trigger nicht mehr benötigen, können Sie ihn mit der DROP TRIGGER-Anweisung löschen:
CREATE TRIGGER set_created_at
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
    UPDATE employees SET created_at = NOW() WHERE id = NEW.id;
END;
Nach dem Login kopieren
Nach dem Login kopieren

Überlegungen bei der Verwendung von Triggern

  1. Auswirkungen auf die Leistung: Trigger erhöhen den Overhead Ihrer Datenbankoperationen, da sie zusätzliche SQL-Anweisungen ausführen. Bedenken Sie, wie komplex die Triggerlogik ist, insbesondere bei großen Tabellen oder häufigen Vorgängen.

  2. Trigger-Verschachtelung: Seien Sie vorsichtig mit Triggern, die dieselbe Tabelle ändern, da dies zu Endlosschleifen oder einer übermäßigen Ressourcennutzung führen kann. MySQL erlaubt es Triggern nicht, sich selbst direkt aufzurufen (rekursive Trigger).

  3. Datenintegrität: Trigger sind nützlich, um die Datenintegrität sicherzustellen, z. B. um unerwünschte Löschungen zu verhindern, aber es kann schwierig sein, sie zu debuggen. Stellen Sie stets sicher, dass die Auslöselogik gut dokumentiert ist.

  4. Trigger testen: Testen Sie Trigger immer gründlich in einer Entwicklungs- oder Staging-Umgebung, bevor Sie sie in der Produktion bereitstellen, da unbeabsichtigte Nebenwirkungen die Anwendungsleistung oder die Geschäftslogik beeinträchtigen können.

Abschluss

MySQL-Trigger sind eine leistungsstarke Funktion zur Automatisierung von Aktionen als Reaktion auf Änderungen in der Datenbank, wie etwa Einfügungen, Aktualisierungen und Löschungen. Mithilfe von Triggern können Sie Geschäftsregeln durchsetzen, die Datenintegrität wahren und Aufgaben wie Audits oder Protokollierung automatisieren. Es ist jedoch wichtig, die Auswirkungen auf die Leistung sorgfältig abzuwägen und sicherzustellen, dass Trigger sorgfältig implementiert werden, um negative Auswirkungen auf die Leistung Ihres Systems zu vermeiden.


Das obige ist der detaillierte Inhalt vonMySQL-Trigger anhand von Beispielen erklärt: Datenbankaktionen automatisieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage