צודק בהחלט (אני לא רשמתי פתרון יפה אלא
צודק בהחלט (אני לא רשמתי פתרון יפה אלא רעיון יפה
)
*
אני צוחק כי עם שינוי מאוד קטנטן (של ביטול המחיקה) השימוש ב OUTPUT יהיה גם פתרון טוב ויפה, שבאמת לא חשבתי עליו ברגע שכתבתי את התשובה (אחרי הכל זרקתי את הפתרון הראשון שעלה לראש)
תחילה אני אומר שאני עדיין חושב שהפתרון של שימוש בטריגר יעיל וטוב יותר (ואני מוכן להסביר ולדון בכך) במקרה של פעולה קבועה ולא הייתי בוחר בפתרון כזה. אבל לפתרון של מצב חד פעמי או מצב לא קבוע זה פתרון טוב מאוד ויפה.
לגבי הבעיה אתה צודק: החלק של המחיקה יוצר בעיה רצינית מפני שהשאילתה הבאה בתור מוחקת את הנתונים ולכן אתה לא יכול לעבוד עם הנתונים הקודמים בשלב הבא כדי לדעת מה היו ה ID-ים שאתה מחפש אחר כך.
* בוא נחבר את הרעיון הזה עם הפתרון ששמתי מעל ונקבל פתרון שלם גם בשיטה של שימוש ב OUTPUT
- אל תמחוק את הנתונים אלא תשאיר אותם בטבלה שמתעדת את הפעולות MyInputIdentityTable .
- מכיוון שעתה אנחנו אנחנו לא מוחקים את הנתונים והטבלה קבועה יהיה עלינו לזהות בהמשך איזה נתונים בטבלה הגיעו משאילתה מסויימת. את זה נבצע את לטבלה הקבועה שלנו MyInputIdentityTable נוסיף עמודה או 2 שיאפשרו לנו זיהוי. למשל עמודה של מי המשתמש שהכניס את הנתוניםן וכן זמן תחילת הפעולה (ערך שנקבע כקבוע לפני תחילת הפעולה). את הנתונים האלא נעביר בפעולה של ה INSERT לטבלת התיעוד שלנו וכך נוכל תמיד לשלוף גם אחורה איזה ID-ים הוכנסו על ידי כל משתמש בכל פעולה (זוהי טבלת לוג למעשה ויש לנהל אותה בהתאם)
* זה למעשה הופך את הפעולה מבחינה הרישום לפעולה הזהה לרישום הנתון בטריגר מאחורי הקלעים בטבלה קבועה כמו שרשמתי מעל. זה נוח יותר במקרה שאין צורך בפעולה קבועה אבל אני חושב שלא הייתי בוחר בכך במקרה של פעולה קבועה (ז"א שעבור כל הכנסה של נתונים אתה רוצה תמיד לקבל את ה ID-ים המעורבים)