Problema con una Inserción en Access lanzada desde JAVA

ofl666
20 de Agosto del 2004
Buenas, tengo un problemilla:
Estoy intentando tirar una consulta de inserción en Access metiendo, entre otros valores, un valor nulo en una foreing key de una tabla. Tirando esta consulta desde el propio Access me deja, pero tirandola desde JAVA con el metodo executeUpdate me da error de restricción violada, desde Access este campo esta definido exigiendo integridad referencial, pero que yo sepa la integridad referencial no se viola metiendo un valor nulo.
¿Alguien sabe por qué me sucede esto?
Gracias

Mario Lavarreda
20 de Agosto del 2004
Claro que si violas la integridad.. Al declarar dicho campo como foreing key le estas diciendo que ese campo va a tener una referencia en otra tabla. Al insertar un valor nulo donde puede buscar la referencia??

ofl666
20 de Agosto del 2004
Permite decirte queridisimo amigo que estas muy equivocado, lo que no puedes insetar en una foreing key es un valor que no este en la tabla relacionada pero si un nulo, de hecho pra que una foreing key no admita valores nulos tienes que especificarlo a posta, por defecto los admite, esto no viola en ningun momento la integridad referencial

Mario lavarreda
20 de Agosto del 2004
En efecto la definicion de una foreign key es:
Es un campo llave que identifica registros en una tabla diferente.
Posiblemente la Base de Datos que estas utilizando no esta relacionada y por eso talvez alguna vez pudiste hacerlo. Pero si esta relacionada para que puedas ingresar una llave foranea, esta debe existir en otra tabla puesto que esta indicando la existencia de este campo en otra tabla.
He visto en Access una opcion que te permite seleccionar si deseas exigir la integridad referencial o no posiblemente sea por eso

Rob Raptor
20 de Agosto del 2004
hasta donde yo se, el compañero Mario Lavarreda tiene la razon... un foreign key no puede ser nulo! al menos en Oracle y en MySql y en Sybase que son las bases con las que se trabaja en la vida real... si el access te permite hacerlo no se, pero los Statement de Java mapean la base y cuando encuentran un error como el que tu dices(porque es un error tuyo te guste o no te guste admitirlo)te arroja una excepcion que no es del proveedor sino del lenguaje... has intentado introducir un valor no-nulo en esa misma tabla, en ese mismo campo? hazlo y hallaras la respuesta a tu pregunta...

Solo faltaria que me explicaras en tus palabras que es integridad referencial... ya que si para ti un campo nulo no la viola, entonces tenemos diferentes concepciones de la entidad relacion y del modelo de Codd.

ofl666
20 de Agosto del 2004
Permite decirte queridisimo amigo que estas muy equivocado, lo que no puedes insetar en una foreing key es un vaen la tabla relacionadalor que no este en la tabla relacionada pero si un nulo, de hecho pra que una foreing key no admita valores nulos tienes que especificarlo a posta, por defecto los admite, esto no viola en ningun momento la integridad referencial