„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich dieselbe Tabelle innerhalb eines MySQL-Triggers aktualisieren?

Wie kann ich dieselbe Tabelle innerhalb eines MySQL-Triggers aktualisieren?

Veröffentlicht am 18.11.2024
Durchsuche:307

How can I update the same table within a MySQL trigger?

MySQL-Trigger-Workaround für die Aktualisierung derselben Tabelle

MySQL schränkt Trigger von Natur aus bei der Aktualisierung von Zeilen in derselben Tabelle ein, der sie zugewiesen sind, und verhindert so rekursive Aufrufe . Trotz dieser Einschränkung gibt es eine praktikable Problemumgehung.

Vorgeschlagene Problemumgehung

Anstatt Zeilen innerhalb eines Triggers direkt zu aktualisieren, nutzen Sie eine gespeicherte Prozedur, die die gewünschte Logik ausführt. Diese Methode trennt die Zeilenaktualisierungsaufgabe vom Trigger und ermöglicht Ihnen, die Einschränkung zu umgehen.

Beispiel

Stellen Sie sich das folgende Szenario vor:

CREATE TABLE MyTable (
  id INT PRIMARY KEY,
  attribute VARCHAR(255)
);

-- Trigger to insert a row into MyTable for each new parent product record
CREATE TRIGGER my_trigger AFTER INSERT ON Products
FOR EACH ROW
BEGIN
  -- Issue SQL statement to call a stored procedure that performs the insert
  CALL insert_attribute(NEW.id, 'Value');
END;

Im obigen Beispiel ruft der Trigger my_trigger die gespeicherte Prozedur insert_attribute auf, um eine Zeile in die MyTable einzufügen, wenn ein neuer Datensatz in die Products-Tabelle eingefügt wird, wodurch effektiv die Funktionalität einer direkten Zeilenaktualisierung innerhalb der Tabelle nachgeahmt wird Trigger.

Zusätzliche Überlegungen

Diese Problemumgehung dient zwar als funktionale Lösung, ist es aber auch Es ist wichtig zu beachten, dass es sich in Bezug auf Leistung und Wartbarkeit von einem herkömmlichen Trigger unterscheidet. Gespeicherte Prozeduren können im Vergleich zu direkten Triggeraktualisierungen zu zusätzlichem Overhead und zusätzlicher Komplexität für das Datenbanksystem führen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3