انتقل إلى المحتوى
أمين أبوزيد
درس مخطط لهMID-015-L06

عرض عملي: تحديث مفقود في طرفيتين

  • الدرس 6 من 7
  • Mid-level
في هذا الدرس 3 موضوعات

هذا الدرس مخطط له. يعرض المخطط أدناه الموضوعات التي سيغطيها، ولم يُنشر الدرس الكامل بعد.

نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.

في هذا الدرس

reproduce a lost update and fix it.

تفاصيل المخطط المبدئي

خطوة بخطوة

  1. Create stock(product_id, qty) with one row, qty 10.
  2. In two psql terminals, both BEGIN; SELECT qty (10), then both UPDATE stock SET qty = 9 and commit; final qty is 9, not 8.
  3. Fix 1: atomic UPDATE stock SET qty = qty - 1 WHERE qty > 0 (final 8).
  4. Planned mistake: assume REPEATABLE READ always lets both commit; show T2 fails with a serialization error ("could not serialize access due to concurrent update"). Explain this is correct and needs a retry.
  5. Fix 2: SELECT ... FOR UPDATE so the second waits.

Prepares MID-015-LAB1.

اختبر فهمك

Which fix needs no extra round trip?

أظهر الإجابة

The atomic UPDATE expression.

التطبيق

طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.

المختبر والتمارين الاختبار

تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.

اكتب للبحث في المستويات والمراحل والوحدات والدروس.