Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum schlägt meine gespeicherte MySQL-Prozedur nach der Implementierung von Transaktionen fehl?

Barbara Streisand
Freigeben: 2024-10-24 23:06:31
Original
752 Leute haben es durchsucht

Why is My MySQL Stored Procedure Failing After Implementing Transactions?

Transaktionsimplementierung in einer gespeicherten MySQL-Prozedur

Um die Datenzuverlässigkeit zu verbessern, hat ein Benutzer versucht, Transaktionen innerhalb seiner gespeicherten MySQL-Prozedur zu implementieren . Allerdings haben die Änderungen dazu geführt, dass das Verfahren nicht mehr funktionsfähig ist. Trotz Konsultation der Dokumentation und Online-Suche konnte der Benutzer den Fehler nicht identifizieren.

Bei der Untersuchung des bereitgestellten Codes wird deutlich, dass zwei Syntaxfehler vorliegen:

  1. Fehlendes Komma im Exit-Handler: Der Exit-Handler für SQL-Ausnahmen und Warnungen sollte Kommas enthalten, die die Bedingungen trennen. Die richtige Syntax schreibt vor: DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING statt DECLARE EXIT HANDLER FOR SQLEXCEPTION SQLWARNING.
  2. Fehlendes Semikolon für Exit-Handler: Die END-Anweisung, die den Exit-Handler beendet, muss ebenfalls befolgt werden durch ein Semikolon, genau wie jede andere Anweisung. Dies würde wie folgt aussehen: ENDE;

Sobald diese Syntaxfehler korrigiert sind, sollte das Verfahren wie vorgesehen funktionieren und es dem Benutzer ermöglichen, Transaktionen nahtlos zu implementieren. Der korrigierte Code sollte wie folgt aussehen:

<code class="sql">BEGIN

DECLARE poid INT;

DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
    ROLLBACK;
END;

START TRANSACTION;

    -- ADD option 5
    INSERT INTO product_option(product_id,option_id,required) VALUES(insertedProductID,5,0);
    SET poid = (SELECT LAST_INSERT_ID());
    INSERT INTO product_option_value(product_option_id,product_id,option_id,option_value_id,quantity,subtract,price,price_prefix,points,points_prefix,weight,weight_prefix) VALUES(poid,insertedProductID,5,50,0,0,4.99,'+',0,'+',0,'+');

    -- ADD option 12
    INSERT INTO product_option(product_id,option_id,required) VALUES(insertedProductID,12,1);

    -- ADD option 13
    INSERT INTO product_option(product_id,option_id,required) VALUES(insertedProductID,13,0);

COMMIT;

END</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum schlägt meine gespeicherte MySQL-Prozedur nach der Implementierung von Transaktionen fehl?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!