• Lunes 29 de Abril de 2024, 01:50

Autor Tema:  Violación De Clave Ajena Desde Builder  (Leído 908 veces)

luthien inglorion

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Violación De Clave Ajena Desde Builder
« en: Domingo 13 de Junio de 2004, 13:54 »
0
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

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: Violación De Clave Ajena Desde Builder
« Respuesta #1 en: Sábado 19 de Junio de 2004, 07:00 »
0
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.
QliX=D! - From the top of Tsunami