Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine MySQL-Tabelle nach einem INSERT-Trigger ohne Fehler aktualisieren?

Wie kann ich eine MySQL-Tabelle nach einem INSERT-Trigger ohne Fehler aktualisieren?

Susan Sarandon
Freigeben: 2024-12-27 00:54:17
Original
633 Leute haben es durchsucht

How Can I Update a MySQL Table After an INSERT Trigger Without Errors?

Trigger und Tabellenaktualisierungen in MySQL

Beim Versuch, dieselbe Tabelle nach einem INSERT-Vorgang mithilfe eines Triggers zu aktualisieren, kann der Fehler bei Benutzern auftreten „Tabelle ACCOUNTS kann nicht aktualisiert werden ... wird bereits von der Anweisung verwendet, die diesen Trigger aufgerufen hat.“ Diese Einschränkung ergibt sich aus der Einschränkung, eine Tabelle zu ändern, die derzeit von der auslösenden Anweisung verwendet wird.

Um dieses Problem zu umgehen, ist es nicht möglich, sich ausschließlich auf Trigger zu verlassen. Stattdessen sollte eine gespeicherte Prozedur erstellt werden, um sowohl die INSERT- als auch die Update-Aktion innerhalb einer einzigen Transaktion abzuwickeln. Durch manuelles Festschreiben der Änderungen mithilfe der gespeicherten Prozedur können Benutzer die durch Trigger auferlegten Einschränkungen umgehen.

Schritte zum Implementieren einer Problemumgehung für gespeicherte Prozeduren:

  1. Gespeichert erstellen Prozedur:
CREATE PROCEDURE update_accounts_status(IN new_account_pk BIGINT) AS
BEGIN
    -- Insert new account
    INSERT INTO ACCOUNTS (user_id, edit_on, status)
    VALUES (?, ?, 'A');
    
    -- Update old account
    UPDATE ACCOUNTS SET status = 'E' WHERE pk = ?;
    
    -- Commit changes
    COMMIT;
END
Nach dem Login kopieren
  1. Gespeicherte Prozedur aufrufen:

Anstatt einen Trigger zu verwenden, kann die gespeicherte Prozedur dies tun wird beim INSERT in die ACCOUNTS-Tabelle aufgerufen. Dadurch wird sichergestellt, dass sowohl die Einfüge- als auch die Aktualisierungsaktion erfolgreich ausgeführt und innerhalb einer einzigen Transaktion festgeschrieben werden.

Vorteile der Verwendung einer gespeicherten Prozedur:

  • Vermeidet die Einschränkung der Aktualisierung derselben Tabelle innerhalb eines Triggers.
  • Ermöglicht eine größere Flexibilität und Kontrolle über die Transaktion.
  • Erleichtert die Ausführung mehrerer Vorgänge (z. B. Einfügen und Aktualisieren) innerhalb einer einzigen Transaktion.

Das obige ist der detaillierte Inhalt vonWie kann ich eine MySQL-Tabelle nach einem INSERT-Trigger ohne Fehler aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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