الانتقال إلى المحتوى الرئيسي
الوحدة 11 · الدرس 1 من 441/57 في الدورة~15 min
دروس الوحدة (1/4)

معاملات ACID (البدء/الالتزام)

تعتمد أسس الموثوقية لأي قاعدة بيانات على الاختصار ACID:

  • A tomicity: إما أن تكتمل العملية بالكامل (الالتزام)، أو تفشل دون ترك أي آثار نصف مكتملة (التراجع).
  • Cتناسق: يتم دائمًا احترام قواعد قاعدة البيانات (مثل القيود والمفاتيح الخارجية).
  • العزل: المعاملات التي تحدث في نفس الوقت لا تتداخل مع بعضها البعض بطرق خارجة عن السيطرة.
  • Durability: بعد الالتزام، تتم كتابة التغيير بشكل لا رجعة فيه على القرص.

بناء جملة المعاملة

عادةً ما يتم التعامل مع كل استعلام UPDATE أو DELETE على أنه معاملة مستقلة (الالتزام التلقائي). ولكن عندما تريد تجميع عمليات متعددة معًا، على سبيل المثال الخصم من حساب العميل وتقديم الطلب، يتعين عليك القيام بذلك بشكل صريح باستخدام صيغة المعاملة.

SQL
BEGIN;

UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
INSERT INTO orders (user_id, total) VALUES (1, 100);

COMMIT; -- Writes the changes

إذا أدرك تطبيق JavaScript الذي أرسل الاستعلام، أثناء عمليات التنفيذ المعقدة هذه، أن هناك مشكلة (على سبيل المثال، لا يوجد مخزون كافٍ في المستودع ويتعطل)، فسيرسل:

SQL
ROLLBACK; -- Cancels the changes and discards the 2 queries sent in the block

جربه بنفسك

تمرين#sql.m11.l1.e1
المحاولات: 0جارٍ التحميل…

افتح معاملة.\nقم بتحديث المنتج بالمعرف 10 مع تعيين "الكمية" الخاصة به على 0 في الجدول المؤقت (بدون انتظار، "الكمية" ليست موجودة على المنتجات، فلنخترع: قم بتغيير "سعر الوحدة" في "order_items" ولكن ذلك يتطلب قيدًا.\nدعونا نفعل ما هو أفضل: قم بتحديث حالة معرف الطلب 5 إلى "تم الشحن" وإكمال المعاملة بنجاح.

جارٍ تحميل المحرر…
إظهار التلميح

ابدأ بـ BEGIN، وقم بتغيير أوامر المعرف = 5 إلى الحالة = 'تم الشحن'، ثم أرسله مع COMMIT؛

الحل متاح بعد 3 من المحاولات

تمرين#sql.m11.l1.e2
المحاولات: 0جارٍ التحميل…

ذعر في الإنتاج! كتب أحد المطورين عملية "حذف" بدون "أين"، مما أدى إلى مسح كافة المراجعات تاريخيًا.\nدعونا نوضح لهم كيفية إجراء التراجع. ابدأ معاملة، وقم بإجراء عملية حذف سريعة تمسح كل شيء من "المراجعات" (بدون عبارة WHERE)، ولكن بعد ذلك استخدم منقذ SQL للتراجع عن التأثير قبل إكمال الكتلة.

جارٍ تحميل المحرر…
إظهار التلميح

ابدأ؛، قم بحذف القائمة النظيفة على "المراجعات"، ثم التراجع السحري؛ في نهايةالمطاف.

الحل متاح بعد 3 من المحاولات