
UPDATE(LastName) מחזירה אמת רק אם העמודה נכללה בפקודת העדכון. כך הטריגר רץ רק על שינוי שם משפחה.הטקסט המלא של הדקות הראשונות בהרצאה «טריגר רק על עמודה אחת» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
ברוכים הבאים להרצאה על טריגר לגבי עמודה אחת. אנחנו רוצים לראות איך אפשר להפעיל טריגר שמשתנה אך ורק עמודה אחת בקלות. נניח אנחנו רוצים לבדוק האם השתנתה רק עמודת last name, ואם כן לתעד את האירוע של שינוי של שם משפחה.
זה מה שאנחנו רוצים לעשות. אנחנו רוצים לעשות טריגר שבזמן של שינוי של שם משפחה הוא שולח לנו נניח התראה. אז קודם כל ניצור טבלה להתראות, משהו פשוט עם עמודה אחת.
אתם יודעים מה, אפילו לא נעשה לה איי-די, נעשה לה רק עמודה אחת שנקרא לה אס-אם-אס ו-nvarchar, נניח 200, ותחשבו שמהטבלה הזאת יש מערכת אחרת שמגיעה וקוראת אס-אם-אסים, שולחת ומוחקת את מה שנשלח, נניח, אוקיי? סתם טבלת נוטיפיקיישן.
פה יהיה טקסט של התראות שהולכות למנהל, ואני רוצה ליידע את המנהל אם מישהו מחליף שם משפחה בתוך הדאטה-בייס, זה מה שהוא ביקש. בואו נראה שכרגע אין לנו שום דבר בתוך הטבלה, אין לנו שום דבר בתוך הטבלה ואנחנו עכשיו רוצים לעשות טריגר חדש.
אנחנו עושים New Trigger, במקום לכתוב את כל זה ידנית, הוא פותח לנו טמפלייט. יכלנו גם לרשום את זה ידנית, זה לא משנה לשרת, אנחנו בסופו של דבר שולחים לו טקסט של SQL שעושה את זה.
נותנים לו איזשהו שם לטריגר, כותבים on על איזה טבלה הוא יישב, על איזה טבלה הוא יסתכל, אז אחרי, זה אחרי פעולה, איזה פעולה, insert, update או delete, אנחנו רוצים רק על פקודת ה-update, יכולנו לעשות insert, pseek, update, אנחנו רוצים כרגע רק על פעולה של delete, רק על פעולה של update, set no count on אומר שאל תראה לי כמה שורות
נגעת בהן, בכמה שורות, כמה rows השפעת עליהן, לפעמים זה מפריע באפליקציות שונות שרוצות לקבל מידע, זה יכול להפריע ליוזר, ואני עכשיו משתמש באפדייט, שימו לב זה בילט אין פאנקשן, זה פונקציה, זה לא פקודת אפדייט.
זו פונקציה שמקבלת שם עמודה ומחזירה true או false, כן, 1 או 0, אם העמודה הזאת השתנתה. איזה עמודה השתנתה? נניח אני רוצה רק last name.
רק אם העמודה של last name משתנה, הביטוי הזה נהיה true. ואחרי שהביטוי הזה נהיה true, אנחנו נכנסים לתוך סלקט, לתוך if.
אנחנו עושים סלקט, ושימו לב, אנחנו עושים insert עם select. החלנו אחרי ה-insert לפרט עמודות בסוגריים, אנחנו עושים select, ושימו לב, יש לנו שתי טבלאות, inserted ו-deleted.
טבלת inserted כוללת את המידע החדש שנכנס ב-update, וה-deleted, את המידע הישן שהולך להימחק. הטבלת inserted ו-deleted קיימות אך ורק, אך ורק בזמן הטריגר.
זאת אומרת, בזמן הטריגר באמצע הביצוע של הפקודה, קיימת לנו הטבלה inserted וdeleted, מידע ישן ומידע חדש. יופי.
עכשיו אנחנו עשינו join, ויצר לנו שורה אחת שכוללת גם את המידע הישן וגם את המידע החדש, ואנחנו יכולים לעשות המידע החדש, i זה ה-inserted ו-d זה ה-deleted, ואנחנו עושים טקסט אחד ארוך, סטרינג אחד ארוך, שנכנס לתוך עמודת נוטיפיי היחידה שהייתה.
אם היינו רוצים, היינו מפחדים בסוגריים של הנוטיפיי, איזה עמודה אנחנו באים להכניס אוקיי אם היה לנו כמה עמודות בנוטיפיי יכולנו לפרט איזה עמודות להכניס או בתוך סלקט לשים אותו מספר עמודות כמו בנוטיפיי יש לנו רק עמודה אחת אז אין צורך לפרט יש לנו inserted עם מידע חדש deleted עם מידע ישן עושים join ואומרים השם משפחה ההוא השתנה לשם משפחה הזה שזה מאוד מאוד יפה ויש לנו
עכשיו תיעוד של שינויים שימו לב אני עושה את זה בלי לקרוא למי שתכנת לי את האתר האינטרנט או את האפליקציה