Transaktionale gespeicherte Prozeduren in MySQL
Durch die transaktionale Ausführung mehrerer SQL-Anweisungen innerhalb einer gespeicherten Prozedur wird sichergestellt, dass entweder alle Anweisungen erfolgreich oder nicht ausgeführt werden überhaupt ausführen. Dieses Verhalten ist entscheidend für die Aufrechterhaltung der Datenkonsistenz und -integrität. So können Sie Transaktionen in Ihrer gespeicherten MySQL-Prozedur erreichen:
Syntaxfehlerkorrektur
In Ihrem bereitgestellten Codeausschnitt gibt es zwei Syntaxfehler, die die gespeicherte Prozedur verhindern davon ab, transaktional zu werden. Die korrekte Syntax lautet wie folgt:
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
ROLLBACK;
END;
Dieser Code deklariert einen Exit-Handler, der alle Änderungen automatisch rückgängig macht, wenn während der Ausführung der gespeicherten Prozedur eine SQL-Ausnahme oder Warnung auftritt. Die Kommas zwischen den Bedingungen für den Exit-Handler und dem Semikolon am Ende der DECLARE-Anweisung sind entscheidend für das ordnungsgemäße Funktionieren der gespeicherten Prozedur.
Beispiel
Einmal Da die Syntaxfehler korrigiert wurden, kann die gespeicherte Prozedur transaktional gemacht werden, indem die SQL-Anweisungen in einen START TRANSACTION...COMMIT-Block eingeschlossen werden. Hier ist ein Beispiel für eine transaktionale gespeicherte Prozedur:
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
ROLLBACK;
END;
START TRANSACTION;
-- Your SQL statements here
COMMIT;
END
Verwendung
Um die transaktionale gespeicherte Prozedur zu verwenden, rufen Sie sie einfach aus Ihrem Anwendungscode als reguläre gespeicherte Prozedur auf. Wenn alle SQL-Anweisungen innerhalb der gespeicherten Prozedur erfolgreich ausgeführt werden, werden diese Änderungen durch die COMMIT-Anweisung dauerhaft in der Datenbank gespeichert. Wenn eine SQL-Ausnahme oder Warnung auftritt, macht die ROLLBACK-Anweisung automatisch alle Änderungen rückgängig.
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