RESTRICT blocks a delete when children point at the parent.

highlighted = computed this step

RESTRICT blocks referenced parent

RESTRICT blocks a parent delete when child rows still point at that parent.

restrict blocks\text{restrict blocks}

Try deleting Ada

The delete status is blocked_by_restrict because 2 child rows reference that parent.

referencing children=2\text{referencing children}=2

Foreign-key delete-action examples are tiny finite table checks; SET NULL, deferrable checks, triggers, transactions, locks, timing, indexing, performance, general referential-action completeness, and product behavior are out of scope.

RESTRICT blocks referenced parent: parent rowscustomer_idname1Ada2Ben3Cy4Dee RESTRICT blocks referenced parent: child rowsorder_idcustomer_idtotal101150102230103170104NULL5 Child-to-parent referenceschildRowchildValueparentRowstatus010matches_parent121matches_parent210matches_parent3NULLnoneNULL_no_reference Delete resultfieldvalueactionrestrictparentValue1parentRow0statusblocked_by_restrictchildRowsAffected(0, 2) Parent after deletecustomer_idname1Ada2Ben3Cy4Dee Child after deleteorder_idcustomer_idtotal101150102230103170104NULL5 FK delete factsfactvalueparentRowCount4childRowCount4referenceCount4nullChildKeyCount1affectedChildCount2deleteStatusblocked_by_restrictparentAfterCount4childAfterCount4supportedActionsrestrict,cascade

After tables stay put

Blocked means both after tables match the before tables.

no rows removed\text{no rows removed}

Summary

RESTRICT is a visible delete result, not a hidden warning.

blocked by restrict\text{blocked by restrict}