בסדרת המאמרים בנושא ניהול שינויים במימד סקרנו את פקודת 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 מכניסה רשומות לטבלה.