تحديث جدول في مشغل بعد التحديث على نفس الجدول
في 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