Hola a todos,
Hemos detectado un problema en el funcionamiento de la Integridad
Referencial de la Base de Datos.
Hemos abierto un incidente en el CAS y estamos a la espera de respuesta de
los desarrolladores, pero parece que se lo toman con calma.
Como hemos detectado el problema al poco de pasar a V5R4, no sabemos si se
trata de un problema nuevo o ya existía en V5R3.
He desarrollado una prueba de concepto, fácil de comprobar, y os
agradecería que la probaseis, sobre todo en V5R3.
CREATE COLLECTION PMR05318
-[SQL7952]- Esquema PMR05318 creado.
-- De esta forma se trata de un entorno aislado y fácil de eliminar.
CREATE TABLE PMR05318/FILEA (FLD001 DEC ( 3) NOT NULL WITH DEFAULT,
FLD002 DEC ( 3) NOT NULL WITH DEFAULT, CONSTRAINT PK_FILEA PRIMARY
KEY (FLD001), CONSTRAINT UK_FILEA UNIQUE (FLD001, FLD002))
-[SQL7950]- Se ha creado la tabla FILEA en PMR05318.
CREATE TABLE PMR05318/FILEB (FLD001 DEC ( 3) NOT NULL WITH DEFAULT,
FLD003 DEC ( 3) NOT NULL WITH DEFAULT, FLD002 DEC ( 3) NOT NULL
WITH DEFAULT, CONSTRAINT PK_FILEB PRIMARY KEY (FLD001, FLD003),
CONSTRAINT FK_FILEB FOREIGN KEY (FLD001, FLD002) REFERENCES
PMR05318/FILEA (FLD001, FLD002) ON DELETE RESTRICT ON UPDATE
RESTRICT)
-[SQL7950]- Se ha creado la tabla FILEA en PMR05318.
CREATE TABLE PMR05318/FILEC (FLD001 DEC ( 3) NOT NULL WITH DEFAULT,
FLD004 DEC ( 3) NOT NULL WITH DEFAULT, CONSTRAINT PK_FILEC PRIMARY
KEY (FLD001, FLD004), CONSTRAINT FK_FILEC FOREIGN KEY (FLD001)
REFERENCES PMR05318/FILEA (FLD001) ON DELETE RESTRICT ON UPDATE
RESTRICT)
-[SQL7950]- Se ha creado la tabla FILEA en PMR05318.
INSERT INTO PMR05318/FILEA VALUES(1, 2)
-[SQL7956]- 1 fila(s) insertada(s) en FILEA en PMR05318.
INSERT INTO PMR05318/FILEB VALUES(1, 3, 2)
-[SQL7956]- 1 fila(s) insertada(s) en FILEB en PMR05318.
DELETE FROM PMR05318/FILEA
-[SQL7955]- 1 filas suprimidas de FILEA en PMR05318.
============= BANG!!! ============
Permite eliminar un registro del fichero FILEA, del cual depende
un registro de FILEB.
==================================
INSERT INTO PMR05318/FILEA VALUES(1, 2)
-[SQL7956]- 1 fila(s) insertada(s) en FILEA en PMR05318.
-- Con esto lo reponemos el registro en FILEA para continuar la prueba
==================================
Si eliminamos FILEC, que nunca ha tenido ningún registro,
la integridad referencial entre FILEA y FILEB vuelve a funcionar.
==================================
DROP TABLE PMR05318/FILEC CASCADE
-[SQL7953]- Eliminación de FILEC en PMR05318 completa.
DELETE FROM PMR05318/FILEA
-[SQL0532]- La restricción referencial FK_FILEB en PMR05318 impide
suprimir.
DROP COLLECTION PMR05318 CASCADE
-[SQL7953]- Eliminación de PMR05318 en QSYS completa.
-- Eliminamos la biblioteca y todo su contenido.
=========================================================================
Hemos hecho algunas pruebas más, con resultados cada vez más sorprendentes,
pero por el
momento me conformaría si alguien pudiera hacer sólo la prueba anterior.
Saludos,
---------------------------
Santiago Martí
Dusen, S.A.
---------------------------
__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© 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