وصف المعاملات
المعاملة هي عبارة واحدة أو أكثر من عبارات T-SQL التي يتم التعامل معها كوحدة. إذا فشلت معاملة واحدة، فستفشل جميع العبارات. إذا نجحت المعاملة، فأنت تعلم أن جميع عبارات تعديل البيانات في المعاملة كانت ناجحة وملتزمة بقاعدة البيانات.
تضمن المعاملات نجاح جميع العبارات داخل المعاملة أو فشلها جميعا، ولا يسمح بالإكمال الجزئي. تغلف المعاملات العمليات التي يجب أن تحدث منطقيا معا، مثل إدخالات متعددة في جداول ذات صلة تشكل جزءا من عملية واحدة.
ضع في اعتبارك شركة تخزن عمليات الشراء في جدول Sales.Order والمدفوعات في جدول Sales.Payment . عندما يشتري شخص ما شيئا يجب تحديث كلا الجدولين. إذا تم تنفيذ ذلك دون معاملات، وحدث خطأ عند كتابة الدفع إلى قاعدة البيانات، فسيظل إدراج Sales.Order ملتزما، تاركا جدول الدفع دون إدخال.
عند تنفيذ ذلك مع المعاملات، يتم إجراء كلا الإدخالين أو لا يتم إجراء أي إدخال. إذا كان هناك خطأ في كتابة الدفع إلى الجدول، أيضا التراجع عن إدراج الطلب. وهذا يعني أن قاعدة البيانات دائما في حالة متناسقة.
تجدر الإشارة إلى أن هذا يشير إلى أخطاء خطيرة، مثل أخطاء الأجهزة أو الشبكة. لن تؤدي الأخطاء في عبارات SQL إلا إلى تراجع المعاملة في ظروف معينة ومن المهم مراجعة الوحدات اللاحقة في هذه الوحدة لفهم الآثار المترتبة على استخدام المعاملات بشكل كامل.
هناك أنواع مختلفة من المعاملات:
المعاملات الصريحة
تبدأ الكلمات الأساسية BEGIN TRANSACTION وإما COMMIT أو ROLLBACK وتنهي كل دفعة من العبارات. يسمح لك هذا بتحديد العبارات التي يجب تثبيتها أو التراجع عنها معا.
المعاملات الضمنية
يتم بدء العملية عند اكتمال المعاملة السابقة. يتم إكمال كل معاملة بشكل صريح مع عبارة COMMIT أو ROLLBACK.
خصائص ACID
تتطلب أنظمة معالجة المعاملات عبر الإنترنت (OLTP) معاملات لتلبية خصائص "ACID":
- الذرية – يتم التعامل مع كل معاملة على أنها وحدة واحدة، والتي تنجح تماما أو تفشل تماما. على سبيل المثال، يجب أن تكمل المعاملة التي تتضمن خصم الأموال من حساب واحد وتقيد نفس المبلغ إلى حساب آخر كلا الإجراءين. إذا تعذر إكمال أي من الإجراءين، فيجب أن يفشل الإجراء الآخر.
- التناسق – يمكن للمعاملات نقل البيانات الموجودة في قاعدة البيانات فقط من حالة صالحة إلى أخرى. لمتابعة مثال الخصم والائتمان أعلاه، يجب أن تعكس الحالة المكتملة للمعاملة تحويل الأموال من حساب إلى آخر.
- العزل - لا يمكن أن تتداخل المعاملات المتزامنة مع بعضها البعض، ويجب أن تؤدي إلى حالة قاعدة بيانات متسقة. على سبيل المثال، في حين أن المعاملة لتحويل الأموال من حساب إلى آخر قيد التنفيذ، يجب أن ترجع معاملة أخرى تتحقق من رصيد هذه الحسابات نتائج متسقة - لا يمكن لعملية التحقق من الرصيد استرداد قيمة لحساب واحد يعكس الرصيد قبل التحويل، وقيمة للحساب الآخر الذي يعكس الرصيد بعد التحويل.
- القدرة على الصمود – عندما يتم تنفيذ معاملة، ستظل ملتزمة. بعد اكتمال معاملة تحويل الحساب، تستمر أرصدة الحساب المنقحة بحيث حتى إذا تم إيقاف تشغيل نظام قاعدة البيانات، ستنعكس المعاملة الملتزم بها عند تشغيلها مرة أخرى.