Nejprve jako jednorázové cvičení pro čištění dat odstraňte osamocené řádky, např.
DELETE
FROM ReferencingTable
WHERE NOT EXISTS (
SELECT *
FROM MainTable AS T1
WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
);
Za druhé, jako jednorázové cvičení pro změnu schématu přidejte příkaz ON DELETE CASCADE
referenční akce na cizí klíč na referenční tabulce, např.
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;
Poté budou řádky v referenčních tabulkách navždy automaticky odstraněny, když bude odstraněn jejich odkazovaný řádek.