מחיקת שורה בטבלה שמופנה אליה FK

יום שלישי, אפריל 21, 2015

נניח שאנחנו רוצים למחוק שורה מטבלת ההזמנות. הבעייה הצפוייה היא שטבלת שורות ההזמנה מקושרת אליה ביחס של 1:N (אחת לרבים), ולכן יש למחוק קודם כל את שורות ההזמנה ורק לאחר מכן את ההזמנה עצמה.לעיתים העסק עלול להסתבך: יש טבלת עובדים, הרבה מאוד טבלאות הכוללות קוד עובד מקושרות אליה, ולעיתים הן עצמן מהוות צד ה-1 לאיזה יחס FK וכך הלאה.. בקיצור- כבר מריחים רקורסיה באוויר!הפרוצדורה שלהלן פועלת כדלקמן: מפעילים אותה עם שם טבלה (סכימה + שם) וקוד מפתח למחיקה.מראש אני מבהיר שאני מניח באופטימיות שהמפתח הוא על עמודה אחת בלבד בכל הטבלאות המעורבות. הפרוצדורה יוצרת טבלה זמנית T# שתשמש...
תגובה אחת

מגבלות של פונקציות חלון

יום שבת, אפריל 19, 2014

פונקציות החלון שהתווספו ל-SQL Server ב”שתי פעימות” – בגרסת 2005 ובגרסת 2012 הוסיפו יכולות רבות לשפת TSQL וסייעו לסגור את הפערים מול שפות התכנות הפרוצדורליות.SQL כשפה דקלרטיבית שונה במהותה משפות התכנות הפרוצדורליות (C, Java, Basic לסוגיהם) בכך שאנחנו “אומרים” מה אנחנו רוצים (Select .. From .. Where) ולא איך לבצע את הפעולה. כמובן שזה מקל בביצוע משימות DML שגרתיות, אך מכביד בביצוע פעולות לא שגרתיות שבהם עלינו לחפש פטנטים יצירתיים כיצד להשתמש בפקודות הקיימות כך שנקבל את מבוקשנו; ולעיתים זה כרוך לא רק בפירוטכניקה וירטואוזית בכתיבת הקוד, אלא גם בביצועים גרועים.הנה למשל בעייה טיפוסית של חישוב סכום מצטבר לסט...
אין תגובות

Identifying Related Tables

יום שלישי, יוני 15, 2010

לפני מספר שבועות איציק בן-גן פרסם אתגר שזו כותרתו, כשהרעיון הוא למצוא את כל הטבלאות המקושרות במישרין או בעקיפין לטבלה מסויימת בעזרת CTE רקורסיבי. טרחתי ופתרתי, ואף זכיתי לכך שהפתרון שלי זכה להתייחסות מלומדת בפוסט ההמשך עם הפתרונות, בבחינת- אין אדם אשר אין לו שעה.. רצה הגורל והאתגר התפרסם סמוך לפרסום הפוסט שלי על העץ הפורש המינימלי, והאתגר של איציק כלל למעשה חיפוש של עץ פורש – לאו דווקא מינימלי – בתוך גרף. כדי שאוכל להתרפק עוד מעט על זרי הדפנה- כתבתי פונקציה שמתמודדת עם האתגר באופן איטרטיבי, כלומר- על...