BORRAR REGISTROS RELACIONADOS
Me gustaria borrar un registro de una tabla que está relacionada con otras muchas, el caso es que al intentar hacer un delete del tipo, por ejemplo:
DELETE FROM Pacientes WHERE idPaciente= 12;
Me da, como es lógico, errores de referencias a otras tablas, ya que la estrucutura de la BD está así montada y no la puedo cambiar.
Mi pregunta es la siguiente:
¿Hay algún otro método para borrar un registro que no sea ese?
Y sino existe, tendria que borrar a mano cada registro en las tablas que estén relacionadas?
Muchas gracias a todos por las respuestas.
TiiiiiiiiiiiiiiiTuS
DELETE FROM Pacientes WHERE idPaciente= 12;
Me da, como es lógico, errores de referencias a otras tablas, ya que la estrucutura de la BD está así montada y no la puedo cambiar.
Mi pregunta es la siguiente:
¿Hay algún otro método para borrar un registro que no sea ese?
Y sino existe, tendria que borrar a mano cada registro en las tablas que estén relacionadas?
Muchas gracias a todos por las respuestas.
TiiiiiiiiiiiiiiiTuS
La única forma que conozco para que esa delete automáticamente borre también las tablas referenciasdas, es que las FOREIGN KEYS tengan la opción de ON DELETE CASCADE.
Si no puedes cambiar esto, supongo que no tienes otro remedio que borrar tabla a tabla,...
Si no puedes cambiar esto, supongo que no tienes otro remedio que borrar tabla a tabla,...
gracias nerea
¿podrias indicar cómo se consigue poner la foreign key con la opción ON DELETE CASCADE?
¿podrias indicar cómo se consigue poner la foreign key con la opción ON DELETE CASCADE?
Creo que no tienes otra opción que recrear la foreign key:
SQL> ALTER TABLE nombre_tabla DROP CONSTRAINT nombre_fk;
SQL> ALTER TABLE nombre_tabla ADD
(CONSTRAINT nombre_fk FOREIGN KEY(codigo)
REFERENCES nombre_tabla2(codigo2)
ON DELETE CASCADE);
SQL> ALTER TABLE nombre_tabla DROP CONSTRAINT nombre_fk;
SQL> ALTER TABLE nombre_tabla ADD
(CONSTRAINT nombre_fk FOREIGN KEY(codigo)
REFERENCES nombre_tabla2(codigo2)
ON DELETE CASCADE);
