GeneXus - Insertar Foreing key nula

 
Vista:

Insertar Foreing key nula

Publicado por Juan Arias (6 intervenciones) el 23/07/2009 15:26:57
Buenos días, tengo el siguiente problema: tengo dos tablas, una de cheques y otra de facturas. Para relacionar los cheques con las facturas inserte en la tabla de cheques el id de la tabla de facturas, ahora bien, cuando cargo un cheque, no necesariamente tiene que estar relacionado con una factura, por lo que necesito insertar un valor nulo en el idfactura que se encuentra en la tabla cheques.

Genexus, por mas que le pongas que acepte nulos, no funciona correctamente. Esto se debe a que no inserta un valor nulo realmente, sino que, por ej, si el id es numérico, inserta un 0. Cuando sucede esto, el motor de base de datos (MySQL) tira un error ya que en la tabla de facturas no hay ninguna fila con id = 0.

A esto lo puedo resolver de dos maneras:

1. Voy al administrador de MySQL y elimino el índice que se crea para mantener la integridad relacional (no me parece una buena solución)
2. Inserto una fila en la tabla de facturas con id=0 (tampoco me parece bueno ya que voy a tener que agregar condiciones en todas partes para no trabajar con esta fila)
3. Crear una tabla relacional

Ahora, lo que debería hacer es crear la tabla relacional, pero esta situación se me da en varias oportunidades, por lo que voy a tener que crear varias tablas relacionales. Querría saber si en genexus esta contemplada de alguna manera esta situación o si hay alguna manera para que inserte un valor nulo (pero nulo de verdad y no un 0...). Desde ya muchas gracias. Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Insertar Foreing key nula

Publicado por Luis (47 intervenciones) el 23/07/2009 21:12:01
Buenos dias Juan!

Si mal no entiendo tenes dos trn, Cheques y Facturas.

Trn Facturas
IdFact*

Trn Cheques
IdChek*
IdFact

Algo como eso. Bien, si quieres que GeneXus no controle la integridad referencial, en la Trn Cheques, dentro de las rules, puedes escribir la regla NoCheck. Quedaria de la siguiente manera:

NoCheck(IdFact);

Ten en cuenta que esta regla, tambien te permite ingresar valores inexistentes para IdFact. Espero que te sirva de algo. Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar Foreing key nula

Publicado por cesar (8 intervenciones) el 23/07/2009 22:22:53
Podes usar la regla Allownulls(AttClave ,AttClave2) , donde los AttClave son los atributos de la clave foranea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Insertar Foreing key nula

Publicado por Juan Arias (6 intervenciones) el 01/08/2009 16:09:14
Lo que hice al final fue crear una tabla relacional, gracias por sus sugerencias. A modo informativo, existe la opción "Generate null for nullvalue()" dentro de Client Server Information en las propiedades del modelo. No la probé pero con esta opción creo que se resolvería tambien. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar