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

Borrar datos de varias tablas con FK

Estas en el tema de Borrar datos de varias tablas con FK en el foro de Oracle en Foros del Web. Hola a todos necesito borrar datos de varias tablas que tienen foreing key entre ellas, he intentado de varias maneras pero siempre me dice lo ...
  #1 (permalink)  
Antiguo 21/09/2009, 01:13
 
Fecha de Ingreso: agosto-2009
Mensajes: 23
Antigüedad: 14 años, 8 meses
Puntos: 1
Borrar datos de varias tablas con FK

Hola a todos necesito borrar datos de varias tablas que tienen foreing key entre ellas, he intentado de varias maneras pero siempre me dice lo mismo.

ORA - 00933: comando SQL no terminado correctamente.

Les dejo el codigo para ver si alguien me dice donde estoy cometiendo el error.

Gracias

DELETE FROM factura
INNER JOIN tipo_factura (factura.COD_FACT = tipo_factura.COD_FACT)
WHERE FACTURA.ID_FACT BETWEEN 300 AND 400;

En este caso me marca el INNER como si estuviera hay el error.

DELETE FROM factura f, tipo_factura tf
WHERE f.ID_FACT BETWEEN 300 AND 400
f.COD_FACT = tf.COD_FACT;

En este caso me da el error en las tablas.
  #2 (permalink)  
Antiguo 21/09/2009, 07:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Borrar datos de varias tablas con FK

Te recomiendo hacer uso de las opciones on delete cascade o on update cascade para hacer esto una tarea automatica.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 21/09/2009, 09:55
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Borrar datos de varias tablas con FK

Estoy de acuerdo en utilizar cascade constraints, pero en caso que no las tengas puedes utilizar una subconsulta, por ejemplo

Código:
DELETE FROM factura
where factura.COD_FACT in (
                    select tipo_factura.COD_FACT 
                    from tipo_factura)
and FACTURA.ID_FACT BETWEEN 300 AND 400;
Saludos
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 21:12.