Tout d'abord, en tant qu'exercice ponctuel de nettoyage des données, supprimez les lignes orphelines, par ex.
DELETE
FROM ReferencingTable
WHERE NOT EXISTS (
SELECT *
FROM MainTable AS T1
WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
);
Deuxièmement, en tant qu'exercice de modification de schéma unique, ajoutez le ON DELETE CASCADE
action référentielle sur la clé étrangère de la table de référence, par ex.
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;
Ensuite, pour toujours, les lignes des tables de référence seront automatiquement supprimées lorsque leur ligne référencée sera supprimée.