لا يكفي أن يكون عمودا العلاقة رقميين لإنشاء مفتاح خارجي صحيح في MySQL. عند ربط أعمدة الأعداد الصحيحة، يجب أن يتوافق حجم النوع وإشارته. لذلك لا يتوافق عمود INT موقّع مع عمود INT UNSIGNED غير موقّع، رغم اشتراكهما في اسم النوع الأساسي.
قد يظهر هذا الخطأ عندما يُعرَّف المعرّف الأساسي بطريقة موحدة في جدول، ثم يُكتب مرجعه يدويًا بطريقة مختلفة في جدول آخر. إصلاح المشكلة يكون بمراجعة التعريفين وجعلهما متوافقين، وليس بتغيير اسم القيد أو إضافة قيمة افتراضية إلى العمود التابع. وجود الصف الأب وحده لا يصلح اختلاف تعريف الأنواع.
مثال
CREATE TABLE customers (
id INT UNSIGNED PRIMARY KEY
);
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT UNSIGNED,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
استخدم المثال INT UNSIGNED في طرفي العلاقة. ليس مطلوبًا أن يتطابق اسم العمودين، بل المطلوب توافق الخصائص التي تعتمد عليها المقارنة المرجعية.
باختصار: طابق نوع العدد الصحيح وإشارته في طرفي المفتاح الخارجي؛ اختلاف UNSIGNED سبب مستقل لرفض تعريف العلاقة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.