إنشاء المعاملات وإدارتها
لبدء معاملة بشكل صريح، استخدم BEGIN TRANSACTION، أو الإصدار المختصر، BEGIN TRAN.
بمجرد بدء المعاملة، يجب أن تنتهي بأي من:
- تنفيذ المعاملة، أو
- التراجع عن المعاملة.
وهذا يضمن أن جميع العبارات داخل المعاملة يتم الالتزام بها معا أو التراجع معا إذا كان هناك خطأ.
تستمر المعاملات حتى يتم إصدار أمر COMMIT TRANSACTION أو ROLLBACK TRANSACTION، أو يتم إسقاط الاتصال. إذا تم إسقاط الاتصال بشكل جزئي من خلال معاملة، يتم التراجع عن المعاملة بأكملها.
قد تكون المعاملات متداخلة، وفي هذه الحالة سيتم التراجع عن المعاملات الداخلية إذا عادت المعاملة الخارجية إلى الحالة السابقة.
لم يتم الكشف عن أي خطأ
عند اكتمال العبارات في المعاملة الخاصة بك دون خطأ، استخدم COMMIT TRANSACTION، التي يتم اختصارها في بعض الأحيان إلى COMMIT TRAN. يؤدي هذا إلى تثبيت التغييرات على قاعدة البيانات. سيؤدي هذا أيضا إلى تحرير موارد مثل التأمينات التي تم الاحتفاظ بها أثناء المعاملة.
إذا تم الكشف عن خطأ
إذا حدث خطأ داخل المعاملة، فاستخدم الأمر ROLLBACK.
التراجع عن أي تعديلات تم إجراؤها على البيانات أثناء المعاملة، وتركها في الحالة التي كانت عليها قبل بدء المعاملة. يقوم ROLLBACK أيضا بإصدار الموارد، مثل التأمينات، التي تم الاحتفاظ بها للمعاملة.
XACT_ABORT
عندما يكون SET XACT_ABORT قيد التشغيل، إذا أثار SQL Server خطأ، يتم التراجع عن المعاملة بأكملها. عندما يكون SET XACT_ABORT متوقفا عن التشغيل، يتم التراجع عن العبارة التي رفعت الخطأ فقط إذا كانت خطورة الخطأ منخفضة.
على سبيل المثال، عندما يكون SET XACT_ABORT OFF، فإن المعاملة لها ثلاث عبارات. اثنان ليس لديهم أخطاء، ولكن الثالث يكسر قيد الفحص. في هذا المثال، على الرغم من أن العبارات الثلاث في معاملة، يتم الالتزام باثنين منها. في نفس المثال، إذا كان الخطأ ناتجا عن نوع بيانات غير صحيح، لكان هذا قاسيا بما يكفي لإصدار التراجع ولن يتم تنفيذ أي من العبارات.
لأنه ليس من الواضح دائما ما إذا كانت المعاملة سيتم تنفيذها أو التراجع عنها، فمن الضروري إضافة معالجة الأخطاء إلى المعاملات.