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

RESTRICT and NO ACTION Guards المنع الصارم بـ RESTRICT

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

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

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

عند عدم تحديد جملة ON DELETE أو ON UPDATE، يطبق MySQL افتراضياً خيار المنع الصارم RESTRICT (وهو مطابق تماماً لخيار NO ACTION في محرك InnoDB). يمنع هذا الخيار حذف أي سجل أب لا تزال له سجلات أبناء مرتبطة (Error 1451)، مما يحمي السجلات المالية والفواتير التاريخية من الحذف المتسلسل غير المقصود:

SQL
CREATE TABLE payment_receipts (
    receipt_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    order_id BIGINT UNSIGNED NOT NULL,
    amount_paid DECIMAL(10, 2) NOT NULL CHECK (amount_paid > 0),
    PRIMARY KEY (receipt_id),
    CONSTRAINT fk_receipts_order
        FOREIGN KEY (order_id) REFERENCES orders (order_id)
        ON DELETE RESTRICT
        ON UPDATE RESTRICT
);