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

DELETE varias tablas.

Estas en el tema de DELETE varias tablas. en el foro de Mysql en Foros del Web. Hola a todos. Tengo la siguiente base de datos: Usuarios, Noticias, Comentarios, NoticiasComent. Necesito que mediante un menú de administrador se puedan borrar usuarios Usuarios ...
  #1 (permalink)  
Antiguo 13/02/2010, 04:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 22
Antigüedad: 14 años, 2 meses
Puntos: 0
DELETE varias tablas.

Hola a todos.

Tengo la siguiente base de datos:

Usuarios, Noticias, Comentarios, NoticiasComent.

Necesito que mediante un menú de administrador se puedan borrar usuarios

Usuarios es la tabla principal, es la tabla "padre" de Noticias y de Comentarios, y NoticiasComent relaciona noticias y comentarios. En Noticias y Comentarios hay un campo en cada uno que tiene la clave principal del usuario elegido

Si quiero eliminar un usuario tengo que borrar primero las relaciones en NoticiasComent, después en comentarios, luego en noticias, y finalmente el usuario, que ya no tiene ninguna relación en otros sitios. El problema es que no sé exactamente qué consulta realizar, porque escribiendo lo siguiente:

mysql_query("DELETE FROM comentarios, noticiascoment USING comentarios INNER join noticiascoment USING (idcomentario) WHERE autorc=$_GET[id]");

Me da el siguiente error:

Cannot delete or update a parent row: a foreign key constraint fails (`blog/noticiascoment`, CONSTRAINT `noticiascoment_ibfk_2` FOREIGN KEY (`idcomentario`) REFERENCES `comentarios` (`idcomentario`))

¿Alguien sabe qué podría hacer?

Gracias.
  #2 (permalink)  
Antiguo 13/02/2010, 05:33
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, 5 meses
Puntos: 2658
Respuesta: DELETE varias tablas.

Dos opciones:
1. Agregale ON DELETE CASCADE ON UPDATE CASCADE a cada FK de la tabla NoticiasComent. Esta tabla tiene FKs que referencian a Noticias y Comentarios, por lo que no se puede borrar algo de las otras (integridad referencial).
2. Borra primero de la tabla NoticiasComent los registros relacionados con las noticias o los comentarios que quieres eliminar, y recién entonces los podrás eliminar.

El mismo problema tendrás para borrar usuarios.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/02/2010, 06:52
 
Fecha de Ingreso: febrero-2010
Mensajes: 22
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: DELETE varias tablas.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Dos opciones:
2. Borra primero de la tabla NoticiasComent los registros relacionados con las noticias o los comentarios que quieres eliminar, y recién entonces los podrás eliminar.
sobre esta opción, ya lo sé, de hecho eso es lo que estoy intentando hacer desde el principio, pero si yo doy un identificador de usuario y ese id no está en esa tabla, no sé cómo puedo le puedo hacer saber el programa qué campos de esa tabla tiene que borrar.

En otras palabras, tengo que borrar a partir del id del usuario, pero en esa tabla el id no está, así que no sé cómo hacer que el programa sepa qué comentarios son del usuario que quiero borrar.

Última edición por Pikus; 13/02/2010 a las 07:01

Etiquetas: delete, tablas
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 22:41.