יצירה וניהול של טרנזקציות

הושלם

כדי להפעיל טרנזקציה באופן מפורש, השתמש ב- BEGIN TRANSACTION או בגירסה המקצרת, BEGIN TRAN.

לאחר הפעלת טרנזקציה, יש להשלים אותה בפעולות הבאות:

  • בצע טרנזקציה, או
  • חזרה למצב קודם של טרנזקציה.

פעולה זו מבטיחה שכל המשפטים בתוך הטרנזקציה מחויבים יחד או מוחזרים יחד אם קיימת שגיאה.

הטרנזקציות יתבצעו עד להנפקה של פקודת COMMIT TRANSACTION או ROLLBACK TRANSACTION, או שהחיבור ישוחרר. אם החיבור מתנתק דרך טרנזקציה, כל הטרנזקציה מוחזרת למצב קודם.

ייתכן שהטרנזקציות מקוננות, במקרה זה הטרנזקציות הפנימיות יוחזרו למצב קודם אם הטרנזקציה היוצאת תחזור למצב קודם.

לא זוהתה שגיאה

כאשר המשפטים בטרנזקציה שלך הושלמו ללא שגיאה, השתמש בפונקציה COMMIT TRANSACTION, לעתים מקוצרת לביצוע TRAN. פעולה זו מבצעת את השינויים במסד הנתונים. פעולה זו גם תפיץ משאבים כגון נעילות המוחזקות במהלך הטרנזקציה.

אם זוהתה שגיאה

אם אירעה שגיאה בתוך הטרנזקציה, השתמש בפקודה חזרה למצב קודם.

חזרה למצב קודם מבטלת את כל השינויים שבוצעו בנתונים במהלך הטרנזקציה, והשארתם במצב שבו היתה לפני תחילת הטרנזקציה. חזרה למצב קודם גם משחררת משאבים, כגון נעילות, המוחזקים עבור הטרנזקציה.

XACT_ABORT

כאשר SET XACT_ABORT מופעל, אם SQL Server מעלה שגיאה, הטרנזקציה כולה מוחזרת למצב קודם. כאשר SET XACT_ABORT מוגדר כ- OFF, רק המשפט שהעלה את השגיאה מוחזר למצב קודם אם חומרת השגיאה נמוכה.

לדוגמה, כאשר SET XACT_ABORT IS OFF של טרנזקציה יש שלושה משפטים. לשתיים אין שגיאות, אך השלישית מנתקת אילוץ בדיקה. בדוגמה זו, למרות שלושת המשפטים נמצאים בטרנזקציה, שניים מהם מחויבים. באותה דוגמה, אם השגיאה נגרמה על-ידי סוג נתונים שגוי, מצב זה היה חמור מספיק כדי להפעיל חזרה למצב קודם ואף אחד מהצהרה לא היה מבוצע.

מאחר שלא תמיד ברור אם הטרנזקציה תחויב או תוחזר למצב קודם, חיוני להוסיף טיפול בשגיאות לטרנזקציות.