Rumah  >  Artikel  >  pangkalan data  >  Mengapa Prosedur Tersimpan MySQL Saya Gagal Melaksanakan Transaksi dengan Berjaya?

Mengapa Prosedur Tersimpan MySQL Saya Gagal Melaksanakan Transaksi dengan Berjaya?

DDD
DDDasal
2024-10-24 23:47:30303semak imbas

Why Do My MySQL Stored Procedures Fail to Execute Transactions Successfully?

Menyelesaikan Isu Transaksi dalam Prosedur Tersimpan MySQL

Apabila cuba melaksanakan transaksi dalam prosedur tersimpan MySQL, pembangun mungkin menghadapi ralat yang tidak dijangka. Artikel ini akan meneroka sintaks dan ralat logik yang boleh menghalang kejayaan pelaksanaan prosedur tersimpan transaksi.

Kes: Transaksi Tidak Berjaya

Seorang pembangun menghadapi masalah apabila cuba melaksanakan transaksi dalam prosedur tersimpan. Walaupun mengikuti dokumentasi MySQL, prosedur itu gagal dilaksanakan dengan jayanya dan menyebabkan ketidakupayaan untuk menyimpan perubahan. Selepas pemeriksaan lanjut, kod tersebut nampaknya betul dari segi sintaksis.

Menganalisis Kod

Coretan kod yang disediakan adalah seperti berikut:

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

Mengenalpasti Ralat

Setelah pemeriksaan rapi, dua ralat sintaks dikenal pasti:

  1. Tiada Koma dalam Pengendali Keluar:

    Atas ialah kandungan terperinci Mengapa Prosedur Tersimpan MySQL Saya Gagal Melaksanakan Transaksi dengan Berjaya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn