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

كيف يمكنني تحديث نفس الجدول داخل مشغل MySQL؟

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

How can I update the same table within a MySQL trigger?

الحل البديل لـ MySQL Trigger لتحديث نفس الجدول

يقيد MySQL بطبيعته المشغلات من تحديث الصفوف في نفس الجدول الذي تم تعيينها له، مما يمنع الاستدعاءات المتكررة . على الرغم من هذا القيد، يوجد حل بديل قابل للتطبيق.

الحل المقترح

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

مثال

خذ بعين الاعتبار السيناريو التالي:

CREATE TABLE MyTable (
  id INT PRIMARY KEY,
  attribute VARCHAR(255)
);

-- Trigger to insert a row into MyTable for each new parent product record
CREATE TRIGGER my_trigger AFTER INSERT ON Products
FOR EACH ROW
BEGIN
  -- Issue SQL statement to call a stored procedure that performs the insert
  CALL insert_attribute(NEW.id, 'Value');
END;
في المثال أعلاه، يستدعي المشغل my_trigger الإجراء المخزن Insert_attribute لإدراج صف في MyTable عند إدراج سجل جديد في جدول المنتجات، مما يحاكي بشكل فعال وظيفة تحديث الصف المباشر داخل المشغل.

اعتبارات إضافية

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

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

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

Copyright© 2022 湘ICP备2022001581号-3