השלמה למאמר על ניהול שינויים במימד

By | 22 ביולי 2010

בסדרת המאמרים בנושא ניהול שינויים במימד סקרנו את פקודת Merge ואת השימוש ב- Output כדי לקבל פלט של השינויים אשר בוצעו ברשומות בטבלה.

קיבלתי תגובה במייל לסדרת המאמרים. בקצרה אומרת התגובה שהרצת פקודת ה- Merge בשילוב עם Insert על מנת לנהל שינויים במימד מסוג 2 (שמירת הסטוריית שינויים באמצעות הוספת רשומות למימד) יוצרת לעיתים תגובה מבלבלת מה- Management Studio.

כאשר לא היה שינוי באף אחת מהרשומות במימד אך נוספו רשומות חדשות, מחזיר ה- Management Studio  את ההודעה   (0 row(s) affected) את gment studio ף אחת מהרשומות במימד אך נוספו רשומות חדשות, מחזיר ה-  , זאת אף שכאמור נוספו רשומות חדשות למימד.

אפשר לבדוק זאת בקלות כאשר מריצים את פקודת ה- Merge על טבלת מימד ריקה. רואים שהטבלה התמלאה ולמרות זאת הופיעה ההודעה (0 row(s) affected) .

הסיבה לכך לדעתי היא שההודעה מה-  Management Studio מתייחסת לפקודה האחרונה שבוצעה. כיוון שביצענו שתי פקודות מקוננות אחת בתוך השניה – פקודת Insert משתמשת בפלט של פקודת ה- Merge כדי להכניס רשומות חדשות לרשומות שהשתנו. במצב המתואר אין פקודת ה- Merge מעבירה אף רשומה ולכן ה- Insert שהיא הפקודה החיצונית אכן, לא מכניסה אף רשומה חדשה. רק הפקודה הפנימית Merge מכניסה רשומות לטבלה.

Share

כתיבת תגובה

האימייל לא יוצג באתר.