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