Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/10/2010, 16:48
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: No puedo eliminar datos de una tabla relacionada

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Borrar o vaciar?
No puedes borrar la tabla sin eliminar primero las restricciones de FK que están en las otras tablas, porque son parte de la estructura de las tablas. No solamente es una cuestión de valores.
Vaciarla, si. Si no hay registros en las otras tablas, se puede vaciar la principal sin problemas.
He probado de vaciarla
truncate table tbl_user;

Y me aparece el siguiente error

Cannot delete or update a parent row: a foreign key constraint fails (`prueba`.`tbl_user_personal`, CONSTRAINT `fk_user_personal_user` FOREIGN KEY (`user_id`) REFERENCES `tbl_user` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

Entonces he vaciado primero la tabla tbl_user_personal y entonces si que me dejó vaciar la tabla tbl_user

Pero si no hubiese vaciado estas tablas, ¿Cómo puedo eliminar las restricciones? haciendo un

ALTER TABLE tu_tabla
DROP CONSTRAINT tu_foreign_key

??

Otra pregunta más... ¿Cómo debería hacer para que si elimino un registro de una tabla se elimine todas sus entradas en las demás tablas?

Código SQL:
Ver original
  1. CREATE TABLE `tbl_user_preferencias` (
  2.   `user_id` INT(10) UNSIGNED NOT NULL,
  3.   `user_lang` CHAR(3) COLLATE utf8_spanish_ci DEFAULT 'esp',
  4.   `hide_email` CHAR(1) COLLATE utf8_spanish_ci DEFAULT '0',
  5.   KEY `fk_user_id_user_preferencias_user` (`user_id`),
  6.   CONSTRAINT `fk_user_id_user_preferencias_user` FOREIGN KEY (`user_id`) REFERENCES `tbl_user` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
Muchas gracias de antemano