
SAVE TRANSACTION מסמן נקודה בשם, למשל A או B.ROLLBACK TRANSACTION עם שם נקודה מבטל רק את מה שבוצע אחריה, והטרנזקציה ממשיכה.ROLLBACK בלי שם מבטל את כל הטרנזקציה.הטקסט המלא של הדקות הראשונות בהרצאה «transaction save point» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בשיעור היום אנחנו נראה עוד נקודה נוספת ביכולת שלי לקחת טרנזקציה ולחלק אותה למספר תת-רמות. דיברנו על כך שכל טרנזקציה זו יחידה לוגית אחת מלאה ומושלמת שלא ניתן לחלק אותה.
אולם ניתן בתוך טרנזקציה לסמן לנו איזשהו save point, איזושהי נקודה שאליה אני יכול לחזור, אליה אני יכול לבצע rollback או חומית. בואו נראה מה עשינו כאן בדוגמה שלפנינו.
אני פתחתי טרנזקציה מלאה ובתוכה עשיתי insert לתוך טבלת employees של עובד M1. לאחר מכן שמרתי את הנקודה Save Transaction A, נתתי לה שם Label כלשהו, במקרה הזה זה A, ועשיתי אינסטרוקט נוסף.
אינסטרוקט נוסף מכניס עובד חדש, עובד ששמו M2, וגם כאן לאחר סיום הטרנזקציה הזאת ולאחר סיום פעולת ה-DML הזאת שמרתי את הנקודה B. מה זה אומר?
שימו לב, לאחר ביצוע הפעודה השלישית של M3 עשיתי Rollback Transaction B, מה המשמעות של רולבק טרנזקשן B? אנחנו רוצים לחזור אבל אני לא רוצה לחזור ולבטל את כל הטרנזקציה.
אם הייתי עושה זאת ללא האות B כך ללא האות B היה כאן ביטול של כל הטרנזקציה לגמרי. הרולבק היה מתייחס לי למה שאנחנו ראינו כאן בביגין טרנזקשן כאן פתחתי כאן סגרתי הכל היה מתבטל שלושת העובדים היו נמחקים כלא היו אבל זה לא מה שאני עשיתי אני עשיתי כאן רולבק ל-B מה זה אומר?
תבטל לי עד סייב פוינט של טרנזקשן B. עד לנקודה B תבטל את כל מה שהיה. תעשה rollback. אוקיי.
זה אומר שעובד מספר, שעובד ששמו m3 לא ייכנס. מצוין. הכנסנו לאחר מכן את עובד מספר 4, m4, ואז עשינו rollback טרנזקשן A.
rollback טרנזקשן A גולל לי את כל השינויים עד לנקודה של A. נמצאנו למדים מכאן. כאן חזרתי עד לסף פוינט, לנקודה של A. כל הטרנזקציה היחידה שתתקיים ברגע שנלחץ כאן