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

borrar registros relacionados

Estas en el tema de borrar registros relacionados en el foro de Mysql en Foros del Web. Buenos días, cómo están? tengo una duda con respecto a eliminar registros en la BD que se encuantran relacionados. Ejemplo: Tengo 2 tablas: Catgorias y ...
  #1 (permalink)  
Antiguo 16/03/2012, 08:57
 
Fecha de Ingreso: febrero-2003
Mensajes: 233
Antigüedad: 21 años, 2 meses
Puntos: 4
borrar registros relacionados

Buenos días, cómo están? tengo una duda con respecto a eliminar registros en la BD que se encuantran relacionados.

Ejemplo:

Tengo 2 tablas: Catgorias y subcategorias

-------------------------------------------------------------

Categoria
___________
Id
Categoria


Subcategoria
___________
Id
Id_categoria
Subcategoria


----------------------------------------------------------------

Están relacionadas por Id (Categoria) y Id_subcategoria (Subcategoria)

pienso que puedo borrar con INNER JOIN pero no se como hacerlo, si existe algún otro método mejor, gracias!
  #2 (permalink)  
Antiguo 16/03/2012, 09:11
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: borrar registros relacionados

algo así te podría servir

Código MySQL:
Ver original
  1. delete from subcategoria a where a.id_categoria in (select id from categoria);
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #3 (permalink)  
Antiguo 16/03/2012, 09:31
Avatar de fer911  
Fecha de Ingreso: enero-2004
Ubicación: Saltillo, Coah
Mensajes: 65
Antigüedad: 20 años, 3 meses
Puntos: 3
Respuesta: borrar registros relacionados

opcion 1) puedes correr dos estatutos si tienes el ID

opcion 2) Si no esta borrando por ID y requieres que se mantenga la integridad
puedes utilizar un Trigger de delete sobre la tabla categorias, que funcione asi: Cuando borres algo de esta tabla que tambien borre en automático de la otra tabla subcategorias.

aqui el script.

Código PHP:
Ver original
  1. drop trigger if exists categoria_trigger_delete;
  2.  
  3. delimiter $$
  4. CREATE TRIGGER categoria_trigger_delete
  5. AFTER delete ON categoria
  6. FOR EACH ROW
  7. BEGIN
  8. delete from subcategoria where id_categoria=old.id;
  9.  END$$
  10. delimiter ;

Espero te ayude en algo.

La opcion INNER JOIN a la que haces mención la verdad es que no la he utilizado. siento que el trigger te puede ayudar.
  #4 (permalink)  
Antiguo 16/03/2012, 09:32
 
Fecha de Ingreso: febrero-2003
Mensajes: 233
Antigüedad: 21 años, 2 meses
Puntos: 4
Respuesta: borrar registros relacionados

Hola, gracias por responder, no me borra ningún registro.
  #5 (permalink)  
Antiguo 16/03/2012, 10:55
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 registros relacionados

Hacer un TRIGGER para eso no tiene ningún sentido. Para eso modificas la tala SUBCATEGORIAS y le añades el ON DELETE CASCADE en la FK.
¿No te resultaría más sencillo?
Fuera de eso, te recomendaría que leas el manual de referencia, porque tu uda es lo suficientemente básica como para que aparezca allí:13.2.1. Sintaxis de DELETE
Mira el segundo ejemplo que pone y verás cómo se hace.
N.B.: No puedes borrar una categoría con subcategoría, si una de las tablas se usa en alguna otra tabla como FK.
¿Verificaste las dependencias?
__________________
¿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: registro, registros, relacionados, 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 02:03.