Najpierw, jako jednorazowe ćwiczenie oczyszczania danych, usuń osierocone wiersze, np.
DELETE
FROM ReferencingTable
WHERE NOT EXISTS (
SELECT *
FROM MainTable AS T1
WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
);
Po drugie, jako jednorazowe ćwiczenie dotyczące zmiany schematu, dodaj ON DELETE CASCADE
akcja referencyjna na kluczu obcym w tabeli referencyjnej, np.
ALTER TABLE ReferencingTable DROP
CONSTRAINT fk__ReferencingTable__MainTable;
ALTER TABLE ReferencingTable ADD
CONSTRAINT fk__ReferencingTable__MainTable
FOREIGN KEY (pk_col_1)
REFERENCES MainTable (pk_col_1)
ON DELETE CASCADE;
Następnie, na zawsze, wiersze w tabelach referencyjnych zostaną automatycznie usunięte, gdy ich wiersz, do którego się odnoszą, zostanie usunięty.