اختبار المعاملات
Transactions Quiz
اختبار المعاملات — Transactions Quiz
هذا الاختبار يراجع أهم نقطة في SQL الإنتاجية: لا تفصل القرارات الحساسة عن التحديث. إذا كان المخزون يجب ألا يصبح سالباً، اجعل الشرط داخل UPDATE، وأضف CHECK, ونفذ داخل معاملة عندما تكون هناك خطوات مرتبطة.
مراجعة
هذا نمط صغير، لكنه يحمل عقلية كبيرة: الشرط والتغيير معاً.
متى تكون المعاملة ضرورية حقاً؟
UPDATE المفرد هو بالفعل ذري (atomic) على مستوى الجملة — إما تنجح كل الصفوف المطابقة أو لا شيء. تغليفه في BEGIN/COMMIT لا يضيف شيئاً للأمان.
المعاملة تصبح ضرورية حين تكون هناك جملتان أو أكثر يجب أن تنجحا معاً أو تفشلا معاً:
لو فشلت الجملة الثانية (مثل انقطاع الكهرباء) بعد نجاح الأولى — ROLLBACK التلقائي يُلغي كلتيهما. هذا هو جوهر Atomicity.
مراجعة المفاهيم
التحدي اختبر النمط. هذه الأسئلة تختبر متى يلزم ولماذا يعمل. أجب قبل أن تنظر إلى الشرح.
AND stock > 0 — يجعل الفحص والتغيير عملية واحدة لا يدخل بينها أحد، وقيد CHECK يقف خلفهما شبكة أمان أخيرة.استرجع الآن الكلمات نفسها من ذاكرتك — هي حدود كل وحدة عمل ذرية.
BEGIN يفتح المعاملة ويجمع ما بعده في وحدة واحدة حتى يحسمها COMMIT بالتثبيت أو ROLLBACK بالإلغاء. بدونه كل جملة معاملة مستقلة تُثبَّت فور نجاحها.ROLLBACK يلغي كل ما جرى منذ BEGIN ويعيد القاعدة لحالتها السابقة — وهو ما يحدث تلقائياً أيضاً عند انقطاع الاتصال قبل COMMIT. الوجه الآخر للذرية: النجاح كله أو لا شيء.