


MySQL -Auslöser werden anhand von Beispiel erklärt: Automatisieren von Datenbankvorgängen
MySQL Trigger: Automatisierte Datenbankverwaltung
MySQL -Trigger sind eine leistungsstarke Datenbankfunktion, mit der Sie vordefinierte Aktionen automatisch ausführen können, wenn bestimmte Ereignisse in Tabellen wie Insertion, Update oder Löschen auftreten. Dies ist entscheidend für die Implementierung von Geschäftsregeln, die Aufrechterhaltung der Datenintegrität und die Dokumentation von Datenbankänderungen ohne explizite Verwaltung im Anwendungscode. Dieser Artikel wird in das Konzept, die Verwendung von MySQL -Triggern und einige praktische Beispiele eingehen.
Was ist ein MySQL -Auslöser?
Ein Auslöser ist im Wesentlichen ein Satz von SQL -Anweisungen, die automatisch vom MySQL -Datenbanksystem ausgeführt werden, wenn ein bestimmtes Ereignis auf der Tabelle auftritt. Diese Ereignisse umfassen:
- Einfügen: Ausgelöst, wenn eine neue Zeile in die Tabelle eingefügt wird.
- UPDATE: Entlassen, wenn eine vorhandene Zeile in der Tabelle aktualisiert wird.
- Löschen: Ausgelöst, wenn Zeilen in der Tabelle gelöscht werden.
Auslöser können so konfiguriert werden, dass sie vor oder nach einem Ereignis ausgeführt werden, wodurch Sie flexible Datenverarbeitungsfunktionen erhalten.
Syntax zum Erstellen von Triggern
Die grundlegende Syntax zum Erstellen von Triggern in MySQL lautet wie folgt:
<code class="sql">CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_body;</code>
In:
-
trigger_name
: Der Name des Abzugs. -
trigger_time
:BEFORE
(vor Ereignis) oderAFTER
(nach dem Ereignis). -
trigger_event
:INSERT
,UPDATE
oderDELETE
. -
table_name
: Der Name der Tabelle, die dem Abzug zugeordnet ist. -
trigger_body
: Der vom Trigger ausgeführte SQL -Anweisungsblock.
Zeitauslösung: vor und nachher
- Vor dem Auslöser: Führen Sie vor dem Auslöserereignis aus, sodass Sie Daten ändern können, bevor sie in die Tabelle geschrieben werden.
- Nach dem Trigger: Ausläuft nach dem Auslöserereignis und wird häufig verwendet, um andere Vorgänge basierend auf Datenänderungen wie der Protokollierung durchzuführen.
MySQL -Trigger -Beispiel
1. Auslöser einfügen: Setzen Sie den Standardwert automatisch fest
Angenommen, es gibt eine Mitarbeitertabelle mit dem Namen employees
, die created_at
enthält. Wir können einen AFTER INSERT
-Auslöser erstellen, der automatisch created_at
auf den aktuellen Zeitstempel festgelegt wird:
<code class="sql">CREATE TRIGGER set_created_at AFTER INSERT ON employees FOR EACH ROW BEGIN UPDATE employees SET created_at = NOW() WHERE id = NEW.id; END;</code>
Das NEW
Schlüsselwort bezieht sich auf die neu eingefügte Zeile.
2. Aktualisieren Sie Trigger: Berechnen Sie den Rabattpreis automatisch
Unter der Annahme, dass die products
price
und discount
enthält, hoffen wir, dass discounted_price
automatisch berechnet wird, wenn price
aktualisiert wird:
<code class="sql">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;</code>
Das OLD
Schlüsselwort verweist die Zeile vor dem Update.
3.. Löschen von Triggern: Verhindern Sie die Löschung der Schlüsseldaten
Um zu verhindern, dass wichtige Mitarbeiter gelöscht werden, können Sie den Abzug BEFORE DELETE
verwenden:
<code class="sql">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;</code>
SIGNAL
Signalanweisung wird verwendet, um einen Fehler zu erhöhen und Löschen von Vorgängen zu verhindern.
4. Trigger einfügen: Erstellen Sie Prüfprotokoll
Sie können Trigger verwenden, um Audit employees
aufzunehmen, z audit_log
<code class="sql">CREATE TRIGGER log_employee_insert AFTER INSERT ON employees FOR EACH ROW BEGIN INSERT INTO audit_log (action, table_name, record_id, action_time) VALUES ('insert', 'employees', NEW.id, NOW()); END;</code>
Trigger verwalten
- Auslöser anzeigen: Verwenden Sie
SELECT * FROM information_schema.triggers;
Zeigen Sie Auslöser in der Datenbank an. - Trigger löschen: Verwenden Sie
DROP TRIGGER IF EXISTS trigger_name;
Löschen Sie den Abzug.
Dinge zu beachten bei der Verwendung von Triggern
- Leistungsauswirkungen: Trigger erhöhen den Datenbankbetriebsaufwand, insbesondere in großen Tisch- oder Hochfrequenzbetriebszenarien.
- Trigger -Verschachtung: Vermeiden Sie Trigger, die sich gegenseitig aufrufen und unendliche Schleifen verhindern.
- Datenintegrität: Auslöser helfen bei der Aufrechterhaltung der Datenintegrität, erfordern jedoch eine sorgfältige Ausführung und Prüfung.
- Testen: Stellen Sie sicher, dass Sie die Auslöser in der Testumgebung gründlich testen, bevor Sie in der Produktionsumgebung eingesetzt werden.
abschließend
MySQL -Trigger sind leistungsstarke Datenbank -Tools, die viele Datenbankverwaltungsaufgaben automatisieren. Der rationale Einsatz von Triggern kann die Datenintegrität und Effizienz der Daten verbessern, erfordert jedoch sorgfältige Design und Tests, um potenzielle Leistungsprobleme zu vermeiden.
Das obige ist der detaillierte Inhalt vonMySQL -Auslöser werden anhand von Beispiel erklärt: Automatisieren von Datenbankvorgängen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Sie können das Trennzeichen mit dem Schlüsselwort des Separators in der Funktion Group_Concat () anpassen. 1. Verwenden Sie einen Trennzeichen, um einen benutzerdefinierten Trennzeichen wie Trennzeichen anzugeben. 'Der Trennzeichen kann in ein Semikolon und plus Raum geändert werden. 2. Häufige Beispiele sind die Verwendung des Rohrzeichens '|', Space '', Line Break-Zeichen '\ n' oder benutzerdefinierte Zeichenfolge '->' als Trennzeichen; 3.. Beachten Sie, dass das Trennzeichen ein Zeichenfolge oder ein Ausdruck von String sein muss und die Ergebnislänge durch die Variable gruppe_concat_max_len begrenzt wird, die durch setSessionGroup_concat_max_len = 10000 eingestellt werden kann; 4. Separator ist optional

Die Tabelle kann manuell mit Locktables gesperrt werden. Das Leseschloss ermöglicht es mehr, mehrere Sitzungen zu lesen, aber nicht geschrieben werden kann. Die Schreibschloss enthält exklusive Lesen- und Schreibberechtigungen für die aktuelle Sitzung und andere Sitzungen können nicht lesen und schreiben. 2. Das Schloss ist nur für die aktuelle Verbindung. Die Ausführung von StartTransaction und anderen Befehlen wird das Schloss implizit freigeben. Nach dem Sperren kann es nur auf den verschlossenen Tisch zugreifen. 3. Verwenden Sie es nur in bestimmten Szenarien wie MyISAM -Tabellenwartung und Datensicherung. InnoDB sollte der Verwendung von Transaktions- und Zeilenebenen wie Select ... Forupdate Priorität geben, um Leistungsprobleme zu vermeiden. V.

Um Daten aus der MySQL -Tabelle auszuwählen, sollten Sie die SELECT -Anweisung verwenden, 1. Verwenden Sie SelectColumn1, Spalte2FromTable_Name, um die angegebene Spalte zu erhalten, oder verwenden Sie SELECT*, um alle Spalten zu erhalten. 2. Verwenden Sie, wo Klausel zum Filtern von Zeilen wie SelectName, Altersfromusterwuchs> 25; 3.. Verwenden Sie OrderBy, um die Ergebnisse zu sortieren, wie z. B. OrderByagedesc, was absteigender ordentlicher Alter darstellt. V. 5. Verwenden und, oder Klammern, um zu kombinieren, um zu kombinieren

Ifnull () inmysqlreturnStheFirStexpressionifitisnotnull, andere WisereturnStheSecondexpression, MakingIdeAlforreplaccaceNullvalues withdefaults; Forexample, ifnull (Middle_Name, 'n/a') disponculations-/a'dhensclysclyscelclyculations- und A'dhenmiddle_name_name_name_name_name_name_name_name_name_name_name_name_name_name_name_name_name_name, ifnull (diskont/a'dhensname_name_name_name_name_nAnname, idnull, 0)

Verwenden Sie MySQL, um JSON-Daten zu verarbeiten, um semi-strukturierte Daten in relationalen Datenbanken direkt zu speichern, abzufragen und zu betreiben. Seit Version 5.7 werden JSON -Typen unterstützt. Spalten werden über JSON -Datentypen definiert und legale JSON -Werte werden eingefügt. MySQL überprüft automatisch die Syntax. Daten können mit json_extract () oder -> (zurückgegebene Zeichenfolgen zurückgegeben) und ->> (zurückgegebene Werte zurück) wie Profil ->> "$ .City" extrahiert werden, um Stadtnamen zu erhalten. Unterstützende Filterung von JSON -Werten durch Klauseln, und es wird empfohlen, generierte Spalten und Indizes zu verwenden, um die Leistung zu verbessern, wie z. B. AddCityVarchar (50) Gattungen

ThelikeoperatorinMysqlisusedToSearchForpatternSintentextDatAusingwildcards; 1. Verwenden Sie%tomatchAnysequenceFcharacctersandtomatchasingle Charakter; 2. Feurample, 'John%' findsnamessTartingwithjohn, '%Son'findsnamesendingwithson,'%ar%'findsnamescontainingar, \ _ \ _ \ _ \ _ \ _ \ _ \ _

Verwenden Sie die DropView -Anweisung, um eine Ansicht in MySQL zu löschen. 1. Die grundlegende Syntax ist dropviewView_name; 2. Wenn Sie nicht sicher sind, ob die Ansicht vorhanden ist, können Sie dropviewifexistsView_name verwenden, um Fehler zu vermeiden. 3.. Sie können mehrere Ansichten gleichzeitig über DropViewifexistsView1, View2, View3 löschen. Der Löschvorgang beseitigt nur die Ansichtsdefinition und wirkt sich nicht auf die zugrunde liegenden Tabellendaten aus. Sie müssen jedoch sicherstellen, dass keine anderen Ansichten oder Anwendungen auf der Ansicht angewiesen sind, da ansonsten ein Fehler verursacht werden können und der Vollstrecker eine Abfallberechtigungen haben muss.

UseclarecontinueordeclareexithhandlertospecifyErrorhandlingbeaVior, WhetecontinueAllowsexecutionToproceprosederfterTheerror, AndecontinuexexexexecutionThecurrentBlock; 2.HandleErSusingsqlstatevalues (E.g
