Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Borrar con delete cascade o join !!!

Estas en el tema de Borrar con delete cascade o join !!! en el foro de Mysql en Foros del Web. Tengo la siguiente duda al momento de borrar un registro, el cual se relaciona en más de una tabla adjunto mi modelo de datos y ...
  #1 (permalink)  
Antiguo 09/08/2011, 12:25
 
Fecha de Ingreso: abril-2011
Ubicación: chile
Mensajes: 16
Antigüedad: 13 años
Puntos: 0
Pregunta Borrar con delete cascade o join !!!

Tengo la siguiente duda al momento de borrar un registro, el cual se relaciona en más de una tabla adjunto mi modelo de datos y como pienso que podria ser la consulta para borrar un usuario:



si tengo un usuario con id_Usuarios = 5 y lo quiero borrar, estoy haciendo lo siguiente:

Código MySQL:
Ver original
  1. DELETE FROM WQTI_Usuarios WU
  2.         INNER JOIN WQTI_UsuarioEncuesta WUE ON WU.id_Usuarios = WUE.FK_id_Usuarios
  3.        
  4.     WHERE  WU.id_Usuarios=5;

con cascade on nose como seria su sintaxis !!! mis tablas son InnoDB !!! gracias ...
  #2 (permalink)  
Antiguo 09/08/2011, 14:20
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Borrar con delete cascade o join !!!

Hola Duraznero:

Cuando tengas alguna duda con respecto a sintaxis no hay mejor lugar para buscar que la documentación oficial de MySQL

13.2.1. Sintaxis de DELETE

Ahí encontraras un párrafo que dice lo siguiente:

Cita:
El efecto es que puede borrar registros para varias tablas al mismo tiempo y tienen tablas adicionales que se usan para buscar:

DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;

O:

DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
Ahora bien, en el foro también se ha tratado varias veces el tema, checa esta liga que data del 2009:

http://www.forosdelweb.com/f86/delet...r-join-738688/

Como recomendación final, siempre utiliza la herramienta de búsqueda del foro antes de publicar una nueva pregunta.

Saludos y espero que las ligas te sean de ayuda
Leo.
  #3 (permalink)  
Antiguo 09/08/2011, 14:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Borrar con delete cascade o join !!!

El CASCADE no es una cláusula del DELETE sino del CREATE TABLE, esto es, pertenece a la definición de la tabla y sólo opera para tablas InnoDB, no para las MyISAM.
Si no has definido previamente en la tabla ON DELETE CASCADE al crear la FOREIGN KEY, no hay modo de hacerlo funcionar.
El DELETE con JOIN a múltiples tablas puede tener un resultado errático, porque es MySQL el que define el orden de borrado, y no siempre respeta la dependencia de las FK. Eso lo puedes ver en el link que te posteo Leo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: borrar, cascade, delete, join, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:13.