انتقل إلى محتوى الدرس

Duplicate Key Conflicts in MySQL تعارض المفاتيح المكررة في MySQL

تعلّم معالجة تعارض المفاتيح المكررة عبر INSERT IGNORE و Upsert بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
8 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

عندما يحاول أمر INSERT إدراج سجل تتطابق فيه قيمة المفتاح الأساسي PRIMARY KEY أو الفريد UNIQUE مع سجل موجود مسبقاً في الجدول، يوقف MySQL التنفيذ فوراً ويُرجع الخطأ Error 1062 (23000): Duplicate entry. وفي الأنظمة عالية التزامن (كمزامنة المخزون، أو عدادات الزيارات، أو معالجة الإشعارات المتكررة)، يوفر MySQL ثلاث آليات أصلية لمعالجة التعارض دون توقف:

  • التخطي الآمن INSERT IGNORE: يحوّل خطأ التكرار إلى تحذير ويتخطى السجل المكرر مع الاحتفاظ بالسجل القديم كما هو.
  • الإدراج أو التحديث ON DUPLICATE KEY UPDATE (Upsert): يدرج السجل إن كان جديداً، أو يحدّث أعمدة السجل الموجود في مكانه عند حدوث تعارض.
  • الاستبدال الكامل REPLACE INTO: يحذف السجل القديم المتعارض كلياً ثم يدرج السجل الجديد من الصفر.
مخطط يقارن بين تخطي التكرار عبر INSERT IGNORE والتحديث الموضعي Upsert والاستبدال الكامل REPLACE INTO في MySQL 8
SQL
CREATE TABLE inventory_counters (
    sku_code VARCHAR(32) NOT NULL,
    stock_qty INT UNSIGNED NOT NULL DEFAULT 0,
    sync_runs INT UNSIGNED NOT NULL DEFAULT 1,
    PRIMARY KEY (sku_code)
);