07/04/2008, 06:34
|
| | Fecha de Ingreso: abril-2008
Mensajes: 3
Antigüedad: 16 años, 8 meses Puntos: 0 | |
Re: Posible bug Oracle??? Hola.
Yo también tengo un error de restricción única violada sólo que yo no uso jobs y no sé si es exactametne este bug del que habláis.
No consigo ver la información en metalink.
El caso es que tengo una aplicación que al hacer un insert en una tabla que tiene esta constraint:
ALTER TABLE INVE_VISITAS ADD (
CONSTRAINT INVE_VIS_NUM_VISITA_UK UNIQUE (C_PROV_ID, N_VISITA));
me sale ese error de restricción única violada.
Lo que hacemos es hallar el máximo N_VISITA para un C_PROV_ID dado y sumarle uno, para asegurarnos de que no se repita, pero por algún extraño motivo la función MAX(N_VISITA) está devolviendo un null.
El trozo de la sentencia donde está el problema es este:
(SELECT NVL((MAX(N_VISITA))+1,1) FROM inve_visitas WHERE c_prov_id = 24 )
Ya existen registros para c_prov_id=24 pero el caso es que ese MAX(N_VISITA) siempre devuelve null, por lo tanto la función NVL siempre devuelve un 1 y como ya existe un registro con la pareja de valores (24,1) para esa constraint, salta la excepción.
Si quito la parte de la función NVL, dejando sólo MAX(N_VISITA)+1 me salta un error de que no se puede insertar un NULL.
Lo gracioso es que si ejecuta la sentencia desde el Toad, por ejemplo, funciona perfectamente.
No sé si me habré explicado muy bien. A ver si podéis echarme una mano o decirme si se trata de un bug del oracle (por cierto, versión 9)
Muchas gracias! |