מציאת כל ה-Triggers בבסיס נתונים

שלום לכולם,
לעיתים תכופות מאוד, אני יוצר Triggers בבסיסי נתונים של Sql Server. מאוד נוח לי לעבוד איתם וזה גם משפר ביצועים ופחות קריאות מהאפליקציה.
השימוש שלי בד"כ בטריגרים הוא בדברים שהאפליקציה לא צריכה "לדעת" עליהם. לדוגמא, אם אני מוחק Post מתוך בלוג של משתמש, אני אשתמש ב-Trigger על מנת למחוק את כל ה-Comments של ה-Post הזה.
כמובן שישנם עוד שימושים אבל לא ניכנס אליהם כרגע, זה לא הנושא של הPost.
בכל אופן, כשבסיסי הנתונים הופכים להיות גדולים, מאוד קשה למצוא את הטריגרים מכיוון שהם "מתחבאים" בתוך הטבלאות.
כאן ניתן למצוא את הטריגרים: (בד"כ)
לManagement Studio של Sql אין מקום מובנה שבו ניתן לראות את כל ה-Triggers כמו שניתן לראות Stored Procedures, אבל כן ניתן לכתוב Script שימצא לנו את כולם.
הנה הוא:
SELECT myTriggers.[name] TableName, Triggers.[name] TriggerName,
CASE
WHEN myTriggers.deltrig = Triggers.id  THEN 'Delete'
WHEN myTriggers.instrig = Triggers.id THEN 'Insert'
WHEN myTriggers.updtrig = Triggers.id THEN 'Update'
END 'TriggerType'
FROM sysobjects Triggers JOIN sysobjects myTriggers ON Triggers.parent_obj = myTriggers.[id] WHERE Triggers.xtype='TR'
כך תוכלו למצוא בקלות את ה-Triggers שיש לכם בכל בסיס נתונים.
כך גם אם מתכנתים אחרים צריכים לעבוד על אותו בסיס נתונים, אני ממליץ להם למצוא כך את ה-Triggers ולהבין את הלוגיקה ה"חבויה" יותר של בסיס הנתונים – בהצלחה
** נבדק על Sql 2005, Sql2000.
בהצלחה

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים

*

תגי HTML מותרים: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>