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