شرح صفوف ومحتوى الفقرة
المشغّل التلقائي (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.
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 ;