Hola Martin,
En ese caso que tienen dos códigos de catálogos repetidos, el control se realiza por el código de catálogo. Entonces pueden:
- 1- Renombrar el catálogo que está inactivo a otro código (no recomendado)
- 2- Eliminar el catálogo repetido inactivo. Pero en este caso primero deben verificar que este código de catálogo no se encuentre referenciado en ningún lugar del sistema, esto pueden chequearlo a través del siguiente procedimiento:
Para cada caso de código repetido, recuperar los catálogos
Reemplazar CODIGO-REPETIDO por el código de catálogo que se visualiza en la query de duplicados SELECT * FROM diaguita.scp_catalogo_bienes_patrimoniales WHERE codigo_completo = CODIGO-REPETIDO;
--Reemplazar ID_CATALOGO_ELIMINAR por el id del catálogo duplicado a chequearselect count() from diaguita.scp_solicitud_alta_bien_patrimonial_detalles where id_catalogo_bien_patrimonial = ID_CATALOGO_ELIMINAR;
select count() from diaguita.scp_alta_bien_patrimonial_detalles where id_catalogo_bien_patrimonial = ID_CATALOGO_ELIMINAR;
select count() from diaguita.scp_bienes_patrimoniales where id_catalogo_bien_patrimonial = ID_CATALOGO_ELIMINAR;
select count() from diaguita.scp_amortizacion_detalles where id_catalogo_bien_patrimonial = ID_CATALOGO_ELIMINAR;
Si algunas de las consultas anteriores devuelve más de 1, es decir que tiene alguna referencia desde la tabla consultada, se debe eliminar la referencia al catálogo a eliminar, por el catálogo que va a quedar, esto pueden realizarlo por medio de los siguientes sql:
NOTA: sólo utilizar el update para la tabla donde el punto anterior haya devuelto un valor mayor a 0.
UPDATE diaguita.scp_solicitud_alta_bien_patrimonial_detalles SET id_catalogo_bien_patrimonial=ID_CATALOGO_QUEDA WHERE id_catalogo_bien_patrimonial=ID_CATALOGO_ELIMINAR; UPDATE diaguita.scp_alta_bien_patrimonial_detalles SET id_catalogo_bien_patrimonial=ID_CATALOGO_QUEDA WHERE id_catalogo_bien_patrimonial=ID_CATALOGO_ELIMINAR; UPDATE diaguita.scp_bienes_patrimoniales SET id_catalogo_bien_patrimonial=ID_CATALOGO_QUEDA WHERE id_catalogo_bien_patrimonial=ID_CATALOGO_ELIMINAR; UPDATE diaguita.scp_amortizacion_detalles SET id_catalogo_bien_patrimonial=ID_CATALOGO_QUEDA WHERE id_catalogo_bien_patrimonial=ID_CATALOGO_ELIMINAR;
Finalmente, se puede proceder a eliminar el registro del catálogo duplicado:
DELETE FROM diaguita.scp_catalogo_bienes_servicios_bienes_patrimoniales WHERE id_catalogo_bien_patrimonial = ID_CATALOGO_ELIMINAR; DELETE FROM diaguita.scp_catalogo_bienes_patrimoniales WHERE id_catalogo_bien_patrimonial = ID_CATALOGO_ELIMINAR;
Les recomendamos que este procedimiento primero lo realicen en un servidor de pruebas y verifiquen que los resultados sean los esperados antes de aplicarlo en producción.
Saludos,
Fernando.