"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني تحديث جدول ضمن مشغل بأمان بعد التحديث على نفس الجدول في SQL؟

كيف يمكنني تحديث جدول ضمن مشغل بأمان بعد التحديث على نفس الجدول في SQL؟

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

How Can I Safely Update a Table Within a Trigger After an Update on the Same Table in SQL?

تحديث جدول في مشغل بعد التحديث على نفس الجدول

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

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

خذ بعين الاعتبار المثال التالي:

CREATE TRIGGER upd_total_votes BEFORE UPDATE ON products_score
FOR EACH ROW
BEGIN
    SET new.votes_total = new.votes_1   new.votes_2   new.votes_3   new.votes_4   new.votes_5
END
;

في هذا المثال، سيتم تنفيذ المشغل قبل كل عملية تحديث في جدول Products_score. سيتم حساب القيمة الجديدة لعمود voices_total بناءً على قيم الأعمدة المحدثة (الأصوات_1 إلى الأصوات_5) وتخزينها في العمود الافتراضي new.votes_total الذي يوفره سياق التشغيل.

عند تحديث الجدول ، سيضمن المشغل تحديث عمود voices_total وفقًا لذلك، على الرغم من أن بيان التحديث لا يقوم بشكل صريح بتحديث عمود voices_total نفسه.

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

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

Copyright© 2022 湘ICP备2022001581号-3