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).
تعليقات
إرسال تعليق