Löschen Sie zunächst als einmalige Datenbereinigungsübung die verwaisten Zeilen, z.
DELETE
FROM ReferencingTable
WHERE NOT EXISTS (
SELECT *
FROM MainTable AS T1
WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
);
Zweitens fügen Sie als einmalige Schemaänderungsübung den ON DELETE CASCADE
hinzu referenzielle Aktion auf den Fremdschlüssel auf der referenzierenden Tabelle, z.
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;
Dann werden Zeilen in den referenzierenden Tabellen für immer automatisch gelöscht, wenn ihre referenzierte Zeile gelöscht wird.