Hola Fernando.
Entiendo lo que dices, pero el fallo aquí se produce porque al eliminar o
modificar registros en un fichero padre, se quedan registros huérfanos en
los hijos.

En este caso, una comprobación adicional sería totalmente redundante, y no
aportaría más información ni datos a mostrar.

Contestando a tu primera pregunta, por supuesto que lo hay, al menos en
parte.
Cuando al escribir o modificar un registro se intenta violar una regla de
integridad referencial de Clave Externa o Comprobación de Campo, se puede
recuperar el nombre asignado a la regla que se intenta violar, con lo que
el mensaje al usuario puede ser totalmente explícito.

Si el error detectado es de Clave Duplicada, no conocemos ninguna forma de
recuperar si el error se debe a una Clave Primaria, una Clave Única, o un
Índice con unicidad.


Saludos,
                  ---------------------------
                    Santiago Martí
                       Dusen, S.A.
                  ---------------------------



                                                                       
             Fernando Pérez                                          
             <[EMAIL PROTECTED]                                         
             m>                                                       Para
             Enviado por:              "forum.help400"                 
             forum.help400-bou         <[email protected]>
             [EMAIL PROTECTED]                                          cc
             os.es                                                     
                                                                    Asunto
                                       Re: Integridad Referencial      
             21/02/2008 19:41                                          
                                                                       
                                                                       
                Por favor,                                             
                responda a                                             
              "forum.help400"                                          
             <[EMAIL PROTECTED]                                         
             stas.combios.es>                                          
                                                                       
                                                                       




Lo de las validaciones redundantes, al menos en nuestro caso, se hacen para
poder avisar al usuario del error en los datos que ha informado ¿Es que hay
alguna manera de identificar el error de integridad referencial al hacer el
write/update?.

Por otro lado, al menos también en nuestro caso, en el 99,9% de las
ocasiones no solo se requiere que el registro en la tabla referida exista,
sino que, por ejemplo,  esté en situación distinta de baja, o sea de la
zona del cliente, o ..., con lo que el chain lo tenemos que hacer
igualmente, y controlar si existe el registro (no podemos seguir con las
comprobaciones si no existe). Veo muy pocos casos en los que no se haga la
comprobación redundante que comentas, solo que no es porque no nos fiemos
de la integridad referencial, sino porque hemos de recuperar información de
la tabla referida.

Saludos.

Fernando Pérez

Cerámica Saloni. Dpto. Auditoría y Organización


Santiago G Martí escribió:
      En octubre del año pasado, os comente que habíamos detectado un
      problema de
      integridad referencial, que permitía eliminar registros de un fichero
      de
      los que colgaban registros en otros ficheros, dejando la base de
      datos
      destrozada.

      Nosotros lo detectamos en V5R4, pero Alex lo reprodujo en V5R3.

      Como prometí teneros informados, os cuento:
      El 31/10/2007 abrimos un incidente en el CAS, con todo lujo de
      detalles.
      Finalmente, el laboratorio ha identificado el problema, y promete una
      PTF
      para el mes que viene.

      El APAR correspondiente, MA36171, lo podéis ver en:
      
http://www-1.ibm.com/support/docview.wss?uid=nas2bb1e12237d5519ed862573ef00423cbe


      Afecta a todas las versiones, desde V4R1M0 a V5R4M5 y no es tan
      sofisticado
      como pensábamos, sólo es necesario tener dos ficheros hijos
      dependiendo del
      mismo padre, pero de claves diferentes, ya sean la Primary Key y una
      Unique
      Key o 2 Unique Key diferentes.

      Esto me hace preguntarme:
      ¿Somos los únicos en el mundo que utilizamos la Integridad
      Referencial?

      Si se supone que las reglas de base de datos debemos especificarlas
      en la
      propia base de datos, ¿el resto del mundo hace comprobaciones
      redundantes
      en los programas de aplicación porque desconfían de la base de datos?


      Saludos,
                        ---------------------------
                          Santiago Martí
                             Dusen, S.A.
                        ---------------------------


      __________________________________________________
      Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
      &amp;#169; Publicaciones Help400, S.L. - Todos los derechos
      reservados
      http://www.help400.es
      _____________________________________________________

      Para darte de baja visita la siguente URL:
      http://listas.combios.es/mailman/listinfo/forum.help400

        (See attached file: fperez.vcf)
      __________________________________________________
      Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
      &amp;#169; Publicaciones Help400, S.L. - Todos los derechos
      reservados
      http://www.help400.es
      _____________________________________________________

      Para darte de baja visita la siguente URL:
      http://listas.combios.es/mailman/listinfo/forum.help400

Attachment: fperez.vcf
Description: Binary data

__________________________________________________
Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
&amp;#169; Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

Responder a