"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحقيق سلوك المعاملات في إجراءات MySQL المخزنة؟

كيفية تحقيق سلوك المعاملات في إجراءات MySQL المخزنة؟

تم النشر بتاريخ 2024-11-12
تصفح:581

How to Achieve Transactional Behavior in MySQL Stored Procedures?

إجراءات المعاملات المخزنة في MySQL

تنفيذ عبارات SQL متعددة بطريقة معاملات ضمن إجراء مخزن يضمن إما تنفيذ جميع العبارات بنجاح أو لا شيء تنفيذ على الإطلاق. يعد هذا السلوك ضروريًا للحفاظ على تناسق البيانات وتكاملها. فيما يلي كيفية تحقيق المعاملات في إجراء MySQL المخزن:

تصحيح خطأ بناء الجملة

في مقتطف التعليمات البرمجية المقدم لديك، هناك خطأان في بناء الجملة يمنعان الإجراء المخزن من أن تصبح معاملات. بناء الجملة الصحيح هو كما يلي:

DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
    ROLLBACK;
END;
يعلن هذا الرمز عن معالج الخروج الذي سيقوم تلقائيًا باستعادة أي تغييرات في حالة حدوث استثناء أو تحذير SQL أثناء تنفيذ الإجراء المخزن. تعتبر الفواصل بين شروط معالج الخروج والفاصلة المنقوطة في نهاية بيان DECLARE ضرورية لحسن سير العمل في الإجراء المخزن.

مثال

مرة واحدة تم تصحيح أخطاء بناء الجملة، ويمكن إجراء المعاملات المخزنة عن طريق تضمين عبارات SQL ضمن كتلة بدء المعاملة...الالتزام. فيما يلي مثال على إجراء مخزن للمعاملات:

BEGIN

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

START TRANSACTION;

    -- Your SQL statements here

COMMIT;

END

الاستخدام لاستخدام الإجراء المخزن للمعاملات، ما عليك سوى الاتصال به من رمز التطبيق الخاص بك كإجراء مخزن عادي. إذا تم تنفيذ كافة عبارات SQL ضمن الإجراء المخزن بنجاح، فستجعل عبارة COMMIT هذه التغييرات دائمة في قاعدة البيانات. في حالة حدوث أي استثناء أو تحذير في SQL، ستقوم عبارة ROLLBACK تلقائيًا بالتراجع عن كافة التغييرات.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3