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

الإدراج أو التحديث (Upserts)

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

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

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

في هذا الدرس

insert or update in one atomic statement.

الموضوعات المخطط لها

  • INSERT ... ON CONFLICT (key) DO UPDATE SET ... or DO NOTHING.
  • The conflict target needs a unique index or constraint.
  • EXCLUDED refers to the row you tried to insert.
  • It is atomic under concurrency; "select, then insert or update" is not.
تفاصيل المخطط المبدئي

عرض عملي

sql
INSERT INTO daily_sales (day, revenue_cents) VALUES ($1, $2)
ON CONFLICT (day) DO UPDATE
SET revenue_cents = daily_sales.revenue_cents + EXCLUDED.revenue_cents;

اختبر فهمك

Why is ON CONFLICT safer than select-then-insert?

أظهر الإجابة

It is one atomic statement; two sessions cannot both insert.

التطبيق

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

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

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

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