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

ON DELETE mysql

Estas en el tema de ON DELETE mysql en el foro de Bases de Datos General en Foros del Web. Hola amogos del foro, de nuevo molestandolos con conconsultas y dudas. Tengo el siguiente caso: tabla empresa: con un id_empresa tabla proveedores: con un id_provedor ...
  #1 (permalink)  
Antiguo 01/08/2009, 19:38
 
Fecha de Ingreso: junio-2009
Mensajes: 22
Antigüedad: 15 años, 6 meses
Puntos: 1
De acuerdo ON DELETE mysql

Hola amogos del foro, de nuevo molestandolos con conconsultas y dudas.

Tengo el siguiente caso:

tabla empresa: con un id_empresa
tabla proveedores: con un id_provedor y foranea a id_empresa

tabla compras: con foranea al id de la empresa
tabla ventas: con foranea al id de la empresa
tabla productos: con foranea al id de la empresa
tabla gastos: con foranea al id de la empresa

¿¿ como puedo gestionar los datos, como por ejemplo cuando borro una empresa, me borre toda la informacion de esa empresa. ??

yo probe colocando en la tabla empresa (id empresa) ondelete cascade pero nda por ahora.

Y una pregunta un poco tonta per la hago igual.
¿¿ cuando borro un proveedor puedo lograr que no me elimine el dato de la tabla compra por ejemplo ?? (esto me suena imposible ya es una clave foranea, pero lo consulto por las dudas)


desde ya muchas gracias a quien por lo menos se tome el trabajo de leer esto.


saludos !!
  #2 (permalink)  
Antiguo 01/08/2009, 20:50
 
Fecha de Ingreso: junio-2009
Mensajes: 22
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ON DELETE mysql

BUeno aqui me autorrespondo por si alguien tiene la misma duda en el futuro.
Estuve investigando y probando.
La solucion simple a este problema es colocar ondelete cascade en todas la llaves foraneas, sino es imposible que elimine toda la informacion referenciada, ya que en algun punto una llave foranea que no este seteada ondelete cascade, no va a permitir el borrado.
En relacion a mi tonta pregunta sobre quere elminar una tupla que es referencia en otra tabla sin que qne esa tabla se elmine la clave foranea, bueno es imposible, nunca vamos a poder elminar una tabla que tiene una clave foranea.
La unica solucion posible para este caso, es colocar a la clave foranea ondelete set NULL, que nos dejara el campo de la clave foranea seteado en NULL. Esto es posible siempre que la clave a la cual hace referencia esa foranea, permita ser seteada a null (un poco contradictorio, ya que nadie va quere tener una foranea null, pero es asi). al momento de esto lo indicamos al definir la tabla
Bueno espero sirva para aguien en el futuro.

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 07:29.