انتقل إلى محتوى الدرس

BEFORE and AFTER Row Triggers المشغلات قبل وبعد تعديل الصف

تعلّم المشغلات التلقائية Triggers والأحداث المجدولة Events في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

المشغّل التلقائي (Trigger) في محرك MySQL 8.4 هو كائن برمجي مخزن يرتبط بجدول محدد ويعمل تلقائياً استجابةً لحدث تعديل بيانات (INSERT أو UPDATE أو DELETE) دون الحاجة لاستدعائه يدوياً من التطبيق. يعمل المشغل دائماً على مستوى كل صف متأثر بالتعديل (FOR EACH ROW)، بحيث إذا عدّلت جملة UPDATE خمسة صفوف، ينفذ الخادم جسم المشغل خمس مرات متتالية.

ينقسم توقيت تشغيل المشغل إلى نوعين رئيسيين: المشغل القبلي (BEFORE Trigger) ويعمل قبل حفظ التعديل الفعلي على القرص، مما يجعله مثالياً لتنقية المدخلات وضبط القيم الافتراضية والتحقق من صحة البيانات قبل كتابتها؛ والمشغل البعدي (AFTER Trigger) ويعمل بعد نجاح كتابة الصف وتوليد المفاتيح التلقائية، مما يجعله الخيار الأنسب لتسجيل حركات التدقيق (Audit Logs) وتحديث الجداول الإحصائية التابعة.

المشغلات التلقائية Triggers والأحداث المجدولة Events في MySQL

مخطط معماري يوضح آلية عمل المشغلات التلقائية BEFORE وAFTER وسجلات NEW وOLD ورفع الأخطاء بـ SIGNAL والأحداث المجدولة بـ CREATE EVENT.
المشغلات التلقائية Triggers والأحداث المجدولة Events في MySQL
المشغلات التلقائية Triggers والأحداث المجدولة Events في MySQL
SQL
DELIMITER $$
CREATE TRIGGER trg_customers_before_insert
BEFORE INSERT ON customers
FOR EACH ROW
BEGIN
    SET NEW.email = LOWER(TRIM(NEW.email));
    IF NEW.loyalty_points < 0 THEN
        SET NEW.loyalty_points = 0;
    END IF;
END$$
DELIMITER ;