Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   problema con foreing key!!!!! (https://www.clubdelphi.com/foros/showthread.php?t=45795)

david_uh 13-07-2007 20:05:04

problema con foreing key!!!!!
 
buen día caballeros

tengo dos ablas clientes y pedido ambas relacionadas
clientes(id,nombre,direccion)
pedidos(id,idpedido,monto, cargo)
la relacion es clientes.id=pedidos=idcliente

lo que deseo es que al borrar un cliente que este referenciado en la tabla pedidos, simplemente se borre el clinte y que quede su id en el campo idcliente en la tabla pedidos, si modifico el id del cliente se actualice en la tabla pedidos.

al crear la clave foranea en la tabla pedidos pongo
on delete: no action
on update: cascade

pero al darle apply se pone automáticamente esto

on delere: restrict
on update: cascade

como podria hacer para que cuando se borre un cliente quede su id en la tabla pedidos aunqueno tenga corresponddencia con la tabla clientes???

gracias por sus aportes

poliburro 14-07-2007 02:59:47

Amigo, eso que dices es un pecado en un diseño entidad relación.

Simplemente para eso no requieres tener restricciones de llave foranea entre las tablas pedidos y clientes.

Pero, insisto, eso significaria un error de diseño.

egostar 14-07-2007 03:50:16

Totalmente de acuerdo con poliburro, para lo que quieres hacer (borrar cliente, sin borrar pedidos) no necesitas las llaves foreaneas, pero obviamente, las inconsistencias en la tabla pedidos serán catastróficas.

Pero me pregunto; borrar un cliente, ¿será lo correcto?.

Salud OS.

roman 14-07-2007 03:55:08

Yo también me preguntaba esto. Para efectos contables y demás yerbas, imagino que no pueden borrarse los clientes, aun cuando ya no lo sean. Pero al margen de eso, opino igual que ustedes, no debería poder borrarse un registro y dejar vivos sus dependientes.

// Saludos

david_uh 14-07-2007 19:41:39

si bueno tiene razón lo que pasa es que ciertos clientes ya no son de la empresa. La solucion que he dado es crear un campo mas en la tabla clientes de tipo boolean si esta activoono lo cual emula un borrado logico cuando se le setea a inactivo, quedando aun sus pedidos para efectos contables o de estadística

gracias por sus respuestas


La franja horaria es GMT +2. Ahora son las 18:32:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi