triggers, מהיכן להתחיל?

nightjar

New member
triggers, מהיכן להתחיל?

יש לי שתי טבלאות עם שדה משותף. טבלה אחת היא של חדרים (משרדים), השנייה של עובדים (יכולים להיות מספר עובדים בכל חדר). בטבלת החדרים יש שדה המציין האם החדר מאוכלס או לא (Y/N), כלומר האם קיימות עבורו רשומות בטבלת העובדים או לא.
טבלת העובדים נערכת ע"י משתמשים באופן כלשהו שאינו ענייני. אני צריך ליצור מנגנון שיעדכן את שדה האכלוס בכל פעם שטבלת העובדים מתעדכנת.
אני זקוק לקצה חוט... מדובר ב SQL Server 2012.
תודה!
 

גרי רשף

New member
כיוונת לתשובה..

טריגר זה אופציה ראוייה שיש לה יתרונות וגם חסרונות:
אתה מעדכן את טבלת העובדים, והטבלה השניה מתעדכנת מעצמה (=מופעל מאחורי הקלעים טריגר, שזה קוד אוטומטי שמעדכן אותה).
השאלה שלך היא איך כותבים את אותו טריגר?
אם יש פתרונות אחרים?
משהו אחר?
 

nightjar

New member
אשמח לקבל דוגמאות פשוטות לטריגר שמעדכן טבלה

גם אפשרויות נוספות יתקבלו בברכה. במקור חשבתי להשתמש ב JOIN שיוסיף את השדה או ב computed column. לצערי שתי האפשרויות לא נתמכות ביישום שלנו.
 

גרי רשף

New member
דוגמה לטריגר

Create Trigger Trg_Workers
On T_Workers
For Insert
As
Update S
Set IsOccupied=1
From T_Shifts S
Inner Join Inserted I
On S.[Date]=I.[Date]
And S.[Hour]=I.[Hour];

הקוד מעדכן את טבלת המשמרות T_Shifts כשמכניסים שורות חדשות לטבלת העובדים T_Workers ומסמן את המשמרות כתפוסות.
בתוך הטריגר - Inserted מציין את השורות החדשות שנכנסו.
אני מניח שההתאמה בין שתי הטבלאות הוא לפי תאריך ושעה.
זו כמובן דוגמה לגבי איך שנראה קוד של טריגר.
 

pitoach

New member
אני ממליץ לך לחשוב על שיפור הארכיטקטורה של מסד הנתונים שלך

התיאור שלך מצביע על אפשרות גדולה לתכנון לקוי

בכל מקרה בקישור הבא תוכלל לראות דוגמאות לשימוש בטריגרים
http://www.mssqltips.com/sqlservertutorial/2911/working-with-triggers/
http://www.sqlteam.com/article/an-introduction-to-triggers-part-i
* לא עברתי על המדריכים לעומק... אלו 2 התוצאות הראשונות שגוגל החזיר בחיפוש.
 

nightjar

New member
תודה על הקישורים

התיאור שלי, האם אתה מתכוון למגבלות על join ו computed column?
 

pitoach

New member
לא, אנ מתכוון לכל הארכיטקטורה של מסד הנתונים שלכם

אני בכלל לא מדבר על השאילתות בשלב זה אלא על המבנה של המסד נתונים (הטבלאות למשל)
 
למעלה