En primer lugar, como un ejercicio de técnica de lavado de una sola vez, elimina las filas huérfanos por ejemplo,
DELETE
FROM ReferencingTable
WHERE NOT EXISTS (
SELECT *
FROM MainTable AS T1
WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
);
En segundo lugar, como un ejercicio esquema alteración de una sola vez, añadir el ON DELETE CASCADE
acción referencial a la clave externa en la tabla de referencia, por ejemplo,
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;
Entonces, para siempre, se eliminarán automáticamente filas en las tablas de referencia cuando se elimina la fila indicada.
@pradeep: ¿qué base de datos está utilizando? –
base de datos utilizada por mí: sql sever 2008 –
quiero consulta simple no quiero utilizar el procedimiento de tienda –