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

Borrar registro de una tabla dependiente de otra

Estas en el tema de Borrar registro de una tabla dependiente de otra en el foro de Oracle en Foros del Web. Hola, buenos días!! tengo un problema que no sé cómo resolverlo. he mirado en internet y no me ha solucionado mucho el problema así que ...
  #1 (permalink)  
Antiguo 19/06/2009, 02:28
 
Fecha de Ingreso: marzo-2009
Mensajes: 75
Antigüedad: 15 años, 1 mes
Puntos: 0
Pregunta Borrar registro de una tabla dependiente de otra

Hola, buenos días!!

tengo un problema que no sé cómo resolverlo. he mirado en internet y no me ha solucionado mucho el problema así que por eso pongo el post, a ver si alguien me dice cómo puede resolver mi problema.

en la aplicación necesito borrar un registro de la tabla Tabla1 en donde estan los siguientes campos CN, ID, NAME y DESCRIPTION. Para borrarlos me bastaría el CN y el ID que son claves primarias, y que los obtengo al seleccionar un registro quen me muestra la aplicación.

Pero esta tabla depende de otra tabla Tabla2, que tiene los siguientes campos, CN, ID, IMEI, por lo que estará la misma información en los campos que se repiten.

lo que quiero es que cuando el usuario de al botón eliminar grupo, se elimine el grupo que ha seleccionado cuando el ID y CN sean los mismos que hay en la Tabla1 y que a su vez sean los mismos que la Tabla2

el where del delete por asi decirlo sería así para que me entendais mejor XD

where Tabla1.cn= 'CN del seleccionado' and Tabla1.id = ID del seleccionado' and Tabla1.cn = Tabla2.cn and Tabla1.id = Tabla2.id

Gracias por todo!!!
  #2 (permalink)  
Antiguo 19/06/2009, 03:08
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Borrar registro de una tabla dependiente de otra

Si las tienes enganchadas por una foreign key, creala con la coletilla " ON DELETE CASCADE "
  #3 (permalink)  
Antiguo 19/06/2009, 03:16
 
Fecha de Ingreso: marzo-2009
Mensajes: 75
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Borrar registro de una tabla dependiente de otra

entonces sería así?

ON DELETE CASCADE from Tabla1 where Tabla1.cn= 'CN del seleccionado' and Tabla1.id = ID del seleccionado' and Tabla1.cn = Tabla2.cn and Tabla1.id = Tabla2.id

me podrías poner un ejemplo si no fuese asi??

muchas gracias
  #4 (permalink)  
Antiguo 19/06/2009, 06:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 75
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Borrar registro de una tabla dependiente de otra

Hola, bueno ya he conseguido borrar el registro.

al final lo que he hecho ha sido duplicar la funcion DELETE que tenía y poner las deletes de cada tabla por separado, y en la funcion cuando se pincha sobre el boton eliminar llamar a la funcion duplicada.

Gracias de todas maneras !!
  #5 (permalink)  
Antiguo 25/06/2009, 09:12
 
Fecha de Ingreso: febrero-2008
Ubicación: Bogotá_Colombia
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Borrar registro de una tabla dependiente de otra

Hola amigo

Yo lo haria asi:

Código PHP:
DELETE tabla1.IDtabla1.CNtabla1.NAMEtabla1.DESCRIPTIONtabla2.IDtabla2.CNtabla2.IMEI FROM tabla1 INNER JOIN tabla2 ON(tabla1.ID=tabla2.ID AND tabla1.DN=tabla2.DN
Espero te sirva y saludos
  #6 (permalink)  
Antiguo 26/06/2009, 00:16
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Borrar registro de una tabla dependiente de otra

No se por que os complicais la vida de esta manera.
Como he dicho, si las dos tablas estan enganchadas por una foreign key, crear dicha clave con la coletilla " ON DELETE CASCADE " y al borrar el registro de la tabla padre, automaticamente borra el hijo. De esta manera te despreocupas de tener que borrar las cosas a mano.

Pero bueno, cada cual hace las cosas como quiere................
  #7 (permalink)  
Antiguo 26/06/2009, 10:38
 
Fecha de Ingreso: febrero-2008
Ubicación: Bogotá_Colombia
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Borrar registro de una tabla dependiente de otra

Hola Jc3000

Si tinenes la razon, para que nos complicamos la vida, tu punto de vista es evidente y demostrable, es mas fácil hacerlo a tu modo; estoy de acuerdo que en estas cosas vale mas la simplicidad que el complique.

Muchas gracias por tu aporte.
  #8 (permalink)  
Antiguo 26/06/2009, 12:30
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 registro de una tabla dependiente de otra

Cita:
entonces sería así?

ON DELETE CASCADE from Tabla1 where Tabla1.cn= 'CN del seleccionado' and Tabla1.id = ID del seleccionado' and Tabla1.cn = Tabla2.cn and Tabla1.id = Tabla2.id

me podrías poner un ejemplo si no fuese asi??
ON DELETE CASCADE debe ser declarado al momento de crear el constraint respectivo, no en la consulta.

Código sql:
Ver original
  1. CREATE TABLE tabla(campo1 INTEGER, campo2 INTEGER,
  2. CONSTRAINT nombre_constraint FOREIGN KEY (campo1) REFERENCES
  3.  tabla_a_referenciar(pk_tabla_a_referenciar) ON DELETE cascade);

De esta forma, al momento de borrarse los registros de la tabla, automaticamente se borran de las tablas donde existen datos enlazados. (Exactamente lo que te dice jc3000)

Si la tabla ya está creada, puedes corregirla con un alter table.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 27/06/2009, 15:50
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: Borrar registro de una tabla dependiente de otra

Cierto, haces un ALTER TABLE..... DROP CONSTRAINT y un ALTER TABLE.... ADD CONSTRAINT ...... ON DELETE CASCADE.

Lo haces facil y te evitas una mala programacion.
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:32.