Aby przy usunięciu rekordu nadrzędnego automatycznie usunęły się powiązane z nim rekordy podrzędne, w definicji klucza obcego dodaje się klauzulę:
Źle.
ON DELETE SET NULL ustawia klucz obcy na NULL, a nie usuwa rekordów podrzędnych.Źle.
ON UPDATE CASCADE reaguje na ZMIANĘ klucza, a nie na usunięcie.Dobrze.
ON DELETE CASCADE przy usunięciu rekordu nadrzędnego usuwa też powiązane podrzędne.Źle.
ON DELETE RESTRICT BLOKUJE usunięcie rekordu nadrzędnego, gdy ma powiązania.ON DELETE CASCADE to opcja klucza obcego, która sprawia, że usunięcie rekordu w tabeli nadrzędnej automatycznie usuwa wszystkie powiązane z nim rekordy w tabeli podrzędnej. Zapobiega to pozostawieniu „osieroconych” wierszy wskazujących na nieistniejący rekord. Dodaje się ją w definicji klucza obcego, np. FOREIGN KEY(klient_id) REFERENCES klienci(id) ON DELETE CASCADE. Dlatego poprawna jest klauzula ON DELETE CASCADE.Pozostałe klauzule reagują inaczej.
ON DELETE SET NULL przy usunięciu rekordu nadrzędnego nie kasuje podrzędnych, lecz ustawia ich klucz obcy na NULL (powiązanie znika, rekordy zostają). ON DELETE RESTRICT działa wręcz odwrotnie - nie pozwala usunąć rekordu nadrzędnego, dopóki istnieją powiązane podrzędne. ON UPDATE CASCADE dotyczy ZMIANY wartości klucza, a nie usuwania. Automatyczne usunięcie rekordów podrzędnych wraz z nadrzędnym daje ON DELETE CASCADE, dlatego to ona jest poprawna.