In primo luogo, come un esercizio di dati-scrubbing di una volta, eliminare le righe orfani per esempio
DELETE
FROM ReferencingTable
WHERE NOT EXISTS (
SELECT *
FROM MainTable AS T1
WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
);
secondo luogo, come esercizio schema-alterazione di una volta, aggiungere l'azione referenziale ON DELETE CASCADE
alla chiave esterna sulla tabella di riferimento esempio
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;
Poi, per sempre, righe nelle tabelle di riferimento verranno eliminati automaticamente quando la loro riga di riferimento viene eliminata.
@pradeep: quale database si utilizza? –
database usato da me: sql sever 2008 –
Voglio query semplice Non voglio usare la procedura di memorizzazione –