شبكة تعلم مع ناو

ماذا يحدث عند إضافة UNIQUE إلى عمود يحتوي على تكرار؟

إضافة قيد إلى جدول موجود لا تعني فحص الإدخالات المستقبلية فقط. عندما نضيف UNIQUE باستخدام ALTER TABLE، يجب أن تكون البيانات الحالية متوافقة معه أيضًا. إذا احتوى العمود على قيم مكررة تخالف القيد، يفشل الأمر ولا تصبح قاعدة التفرد مفعلة على ذلك العمود.

لا يختار MySQL صفًا للاحتفاظ به ويحذف بقية الصفوف تلقائيًا، لأن تحديد السجل الصحيح قرار يتعلق بالبيانات وقواعد العمل. وقد تمثل الصفوف المتكررة سجلات يجب دمجها، أو أخطاء تحتاج تصحيحًا، أو دليلًا على أن القيد المقترح لا يناسب التصميم أصلًا.

مثال

CREATE TABLE books (
  id INT PRIMARY KEY,
  catalog_code INT NOT NULL
);
INSERT INTO books VALUES (1, 100), (2, 200);
ALTER TABLE books
  ADD CONSTRAINT uq_books_catalog UNIQUE (catalog_code);

ينجح المثال لأن الرمزين مختلفان. قبل تطبيق القيد على جدول حقيقي، ينبغي فحص التكرار وتصحيح البيانات بطريقة تحافظ على معناها، ثم تنفيذ تعديل البنية.

باختصار: إضافة UNIQUE تتطلب توافق الصفوف الموجودة؛ وجود تكرار يرفض إضافة القيد ولا يؤدي إلى تنظيف البيانات تلقائيًا.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.