Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine MySQL-Tabelle nach einem INSERT-Trigger ohne Fehler aktualisieren?
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:
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
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:
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!