שיעורי מודול (4/4)
טריגרים וביקורת מעשיים
כעת, לאחר שלמדנו כיצד לזייף כדורים חכמים (פונקציות ההדק), עלינו להרכיב אותם על כלי נשק ראשוניים אמיתיים שמחכים לאירוע: הנה מגיעים הטריגרים בפועל! טריגר מצרף רשמית פונקציה שנוצרה בעבר ומורה לה לירות "BEFORE" או "AFTER" אירוע CRUD מסוים בטבלה נתונה.
יש הרבה אפשרויות; לדוגמה, FOR EACH ROW יורה אותו פעם אחת בכל שורה מושפעת, כך שאם שאילתה בכמות גדולה היא עדכון גלובלי מעל 5 מיליון שורות, היא תפעיל 5 מיליון מיקרו-ביצועים - היזהר עם זה!
CREATE TRIGGER sync_inventory_trigger
-- Event options
AFTER INSERT OR UPDATE ON order_items
-- Modus operandi (singular or global macro-block FOR EACH STATEMENT)
FOR EACH ROW
-- Run the forged action
EXECUTE FUNCTION update_stock();הטריגר אינו נראה ל-JavaScript וישמור באופן אוטונומי על עקביות מלאה של המניה בהתבסס אך ורק על עדכונים שנשלחו בבטחה למנוע.
אוטומציה של Updated_At
יש בעיה עסקית ירוקה עד שבה אנחנו שוכחים להעביר את { updated_at: new Date() } בדגמי עדכון JS שלנו. פונקציית טריגר set_updated_at בשילוב עם טריגר BEFORE UPDATE מסירה את המטרד הזה, ומעדכנת כל שינוי רשומה באופן אוטומטי.
נסה זאת בעצמך
צור טריגר בשם 'trg_force_uppercase'.\nצרף אותו בשלב 'BEFORE INSERT' בטבלת 'customers'.\nכפה חישוב שורה אחר שורה 'FOR EACH ROW' והפעל את ביצוע הפונקציה 'force_uppercase_name()'. הוא מבודד) בחלק העליון של הקוד, ולאחר מכן הוסף את הצהרת הטריגר.
הצג רמז
תחביר טקסט: תחילה צור את הפונקציה, ולאחר מכן הוסף CREATE TRIGGER trg_force_uppercase BEFORE INSERT ON לקוחות עבור כל שורה בצע את הפונקציה force_uppercase_name();
הפתרון זמין לאחר 3 ניסיונות
להרוג את החיישן! לפעמים אנחנו רוצים לדחוף קבצי Seed גולמיים או שינויים מקוריים זמניים, תוך עקיפת ביקורת רועשת.\nהפסקת טריגר היא פשוטה להפליא (אתה לא מוחק את הפונקציה האורגנית, אתה מוחק רק את כריכת החיישן).\nהשתמש במילת המפתח 'DROP TRIGGER', ציין את השם והקובץ המצורף הגלובלי.
הצג רמז
זכור לציין מאיפה. DROP TRIGGER trg_force_uppercaser ON לקוחות;
הפתרון זמין לאחר 3 ניסיונות