Primeiro, como um exercício de limpeza de dados único, exclua as linhas órfãs, por exemplo
DELETE
FROM ReferencingTable
WHERE NOT EXISTS (
SELECT *
FROM MainTable AS T1
WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
);
Segundo, como um exercício de alteração de esquema único, adicione o
ON DELETE CASCADE
ação referencial para a chave estrangeira na tabela de referência, por exemplo 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;
Então, para sempre, as linhas nas tabelas de referência serão excluídas automaticamente quando a linha referenciada for excluída.