7.11 SQL - Foreign Key Actions

إجراءات المفتاح الأجنبي (ON DELETE / ON UPDATE)

في SQL، عند تعريف FOREIGN KEY يمكن تحديد ما يجب أن يحدث للصفوف المرتبطة عند حذف أو تحديث الصفوف في الجدول الأساسي.

هذا يتم باستخدام العبارتين: ON DELETE و ON UPDATE.


🔁 الإجراءات الممكنة:

الإجراء الوصف
CASCADE يُحدث أو يُحذف الصف في الجدول المرتبط أيضًا.
SET NULL يعيّن القيمة إلى NULL في الجدول المرتبط.
SET DEFAULT يُرجع القيمة إلى القيمة الافتراضية المحددة للعمود.
NO ACTION يرفض العملية إذا كان هناك صف مرتبط (مثل RESTRICT).
RESTRICT يمنع الحذف أو التحديث إذا كان هناك صف مرتبط.

🧱 مثال عملي باستخدام CREATE TABLE:


CREATE TABLE Orders (
  OrderID int PRIMARY KEY,
  CustomerID int,
  FOREIGN KEY (CustomerID)
    REFERENCES Customers(CustomerID)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);

⬅ في هذا المثال:

  • إذا تم حذف صف من جدول Customers، سيتم حذف كل الطلبات المرتبطة في Orders.
  • إذا تم تعديل CustomerID في Customers، سيتم تحديث القيمة في Orders.

📌 مثال باستخدام ALTER TABLE:


ALTER TABLE Orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (CustomerID)
REFERENCES Customers(CustomerID)
ON DELETE SET NULL
ON UPDATE CASCADE;

⬅ هذا المثال يضيف مفتاح أجنبي بعد إنشاء الجدول ويحدد الإجراءات المرتبطة.


💡 ملاحظات مهمة:

  • يجب أن تكون الأعمدة المرتبطة لها نفس نوع البيانات.
  • العمود الهدف (في الجدول الأب) يجب أن يكون PRIMARY KEY أو UNIQUE.
  • بعض قواعد البيانات لا تدعم كل الخيارات (مثل SET DEFAULT).

تعليقات

المشاركات الشائعة من هذه المدونة

HTML - Text Formatting تنسيقات النص

1.1 SQL Introduction

Entity Framework - مقدمة عن Entity Framework