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

Borrar dos tablas relacionadas y entre dos fechas

Estas en el tema de Borrar dos tablas relacionadas y entre dos fechas en el foro de Bases de Datos General en Foros del Web. Necesito borrar de una vez el contendido de estas dos tablas ... Código: CREATE TABLE `dep_eventos` ( `id_evento` int(11) NOT NULL auto_increment, `cat_evento` int(11) NOT ...
  #1 (permalink)  
Antiguo 06/02/2010, 08:48
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Cruz de Tenerife
Mensajes: 49
Antigüedad: 15 años, 7 meses
Puntos: 0
Borrar dos tablas relacionadas y entre dos fechas

Necesito borrar de una vez el contendido de estas dos tablas ...

Código:
CREATE TABLE `dep_eventos` (
  `id_evento` int(11) NOT NULL auto_increment,
  `cat_evento` int(11) NOT NULL,
  `evento` varchar(255) NOT NULL,
  `hora` datetime NOT NULL,
  PRIMARY KEY  (`id_evento`)
) TYPE=MyISAM  AUTO_INCREMENT=1 ;

CREATE TABLE `dep_subeventos` (
  `id_subevento` int(11) NOT NULL auto_increment,
  `id_evento` int(11) NOT NULL,
  `p2p` varchar(255) NOT NULL,
  `nombre` varchar(255) NOT NULL,
  `idioma` varchar(255) NOT NULL,
  `tipo` varchar(255) NOT NULL,
  `kbps` varchar(255) NOT NULL,
  `enlace` varchar(255) NOT NULL,
  PRIMARY KEY  (`id_subevento`)
) TYPE=MyISAM  AUTO_INCREMENT=4 ;
Lo que utilizo es lo siquiente ...

Código:
DELETE dep_eventos, dep_subeventos FROM dep_eventos, dep_subeventos WHERE dep_eventos.id_evento=dep_subeventos.id_evento AND ( dep_eventos.hora>= '2010-02-06 00:00:00' AND dep_eventos.hora<='2010-02-06 23:59:59' );
Ya que necesito que sea en dep_eventos entre dos fechas, y que a continuacion borre también los subeventos asociados.

Espero que me puedan echar un cable.

Gracias
  #2 (permalink)  
Antiguo 06/02/2010, 08:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Borrar dos tablas relacionadas y entre dos fechas

La mejor solución sería usar tablas InnoDB, ya que para hacer un borrado en cascada necesitas que el motor de tablas pueda manejar FOREIGN KEYs, y las MyISAM no lo tienen.
Caso contrario, solamente te queda hacerlo con sentencias separadas...
__________________
¿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 08/02/2010, 05:55
 
Fecha de Ingreso: enero-2010
Ubicación: Sevilla
Mensajes: 202
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Borrar dos tablas relacionadas y entre dos fechas

Teniendo en cuenta la relación existente entre las dos tablas deberías borrar primero de la tabla dep_subeventos y luego de dep_eventos.
De ora forma te darán errores de integridad referencial.

Mirando con un poco más de detenimiento he visto que la fecha está en dep_eventos, así que para eliminar los registros de dep_subeventos tendrás que hacer un join entre las dos tablas para poder filtrar por fechas.

Espero haberte sido de ayuda.
Saludos
  #4 (permalink)  
Antiguo 08/02/2010, 06:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Borrar dos tablas relacionadas y entre dos fechas

Cita:
Teniendo en cuenta la relación existente entre las dos tablas deberías borrar primero de la tabla dep_subeventos y luego de dep_eventos.
De ora forma te darán errores de integridad referencial.
No hay integridad referencial administrada por la base, Teosanchez, el motor MyISAM no tiene restricciones de ese tipo porque no da soporte a FOREIGN KEY.
Ese es precisamente el problema que tiene CanariasHosting: AL no existir FKs puede borrar independientemente ambas tablas, pero debe asegurarse de borrar correctamente porque MySQL no le dará ningún aviso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 12/02/2010, 13:36
 
Fecha de Ingreso: enero-2010
Ubicación: Sevilla
Mensajes: 202
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Borrar dos tablas relacionadas y entre dos fechas

Mira este post por si te sirve de ayuda
http://www.forosdelweb.com/f86/integridad-referencial-mysql-5-a-560666/
Este a lo mejor también te puede servir
http://www.bibigeek.com/2009/08/30/crear-foreign-key-con-mysql/

Etiquetas: borrar, dos, fechas, relacionadas, 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 09:45.