SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: luthien inglorion en Domingo 13 de Junio de 2004, 13:54

Título: Violación De Clave Ajena Desde Builder
Publicado por: luthien inglorion en Domingo 13 de Junio de 2004, 13:54
Hola a todos!

A ver si alguien sabe por qué me se me lanza una excepción en mi programa. Estoy haciendo una aplicación en la cual en un determinado momento, quiero poner a null un campo en la tabla y ese campo es clave ajena pero no es un campo obligatorio en la tabla que estoy modificando.
Es decir, yo tengo una tabla "Equipo" donde idEquipo es un smallint y es la clave primaria de esa tabla (y por lo tanto, es not null). Luego tengo una tabla jugador, donde idequipo es foreign key, pero no la declaro como obligatoria en esa tabla.
El hecho es que si quiero quitar a un jugador de un equipo, accedo a la tabla jugadores y hago
Código: Text
  1.  
  2. ...
  3. TablaJugador->Edit();
  4. TablaJugador->FieldValues["IDEQUIPO"]=NULL;
  5. TablaJugador->Post();
  6. ...
  7.  
  8.  

Builder me lanza una excepción cuando hago el Post diciendo que violo la clave ajena de la tabla jugador... Sin embargo, desde Interbase que es la base de datos que estoy utilizando, puedo acceder a los campos de la tabla y borrar el idequipo del jugador sin ningún problema, dejándolo a null tal y como yo quiero.

Estoy ya tirándome de los pelos, porque llevo liada con este problema no sé ya cuanto tiempo y no se me ocurre ninguna manera de solucionarlo. Si me pudieses ayudar estaría enormemente agradecida  

Gracias por vuestra atención
Título: Re: Violación De Clave Ajena Desde Builder
Publicado por: QliX=D! en Sábado 19 de Junio de 2004, 07:00
Si violaste las foreign keys es por que estas borrando en la tabla incorrecta, es en la otra tabla en la que tenes que borrar el valor.
Recomendacion: no uses claves foraneas con valores nulos, traen muchso problema y degradacion de la performance en las consultas.