Modificar titilo con orientaciones para una carrera

Guarani 2 version 294

Tenemos dos carreras El Licenciado en Comunicación Social con el titulo 14, por otro lado tenemos la carrera Licenciado en Comunicación Social Ciclo de Complementación Curricular que se le cargo erróneamente el mismo titulo en la operación car00006 (guarani2) definicion de los títulos que otorga un plan y ademas se le crearon 3 orientaciones.
Cuando se detectó este error se procedió a querer dar de baja este titulo y nos dice que " no se puede dar de baja el registro ya que esta siendo utilizado en otra tabla. Referencia: dba. sga_orientaciones_."
Hay forma de solucionar esta situación sin crear un nuevo plan? si versionamos el plan seguimos con la misma situación.

agradeceremos cualquier ayuda

Hacer el cambio por la base.
Cambiar ese título por el que corresponde en los datos relacionados con ese plan y título que esta mal.

Se intento modificar por base las siguientes tablas desactivando los TRIGGERS:

SET TRIGgERS for sga_orientaciones DISABLED;
SET TRIGgERS for sga_titulos DISABLED;
SET TRIGgERS for sga_orient_alumno DISABLED;
SET TRIGgERS for sga_orient_cambios DISABLED;
SET TRIGgERS for sga_opt_gen_orie DISABLED;
SET TRIGgERS for sga_titulos_otorg DISABLED;
SET TRIGgERS for sga_ciclos_orient DISABLED;
SET TRIGgERS for sga_atrib_mat_orie DISABLED;
SET TRIGgERS for sga_orie_tit_otorg DISABLED;
SET TRIGgERS for sga_alumnos DISABLED;
SET TRIGgERS for sga_titulos_plan DISABLED;
SET TRIGgERS for sga_planes DISABLED;
SET TRIGgERS for sga_atrib_mat_plan DISABLED;
SET TRIGgERS for sga_areas_x_titulo DISABLED;
SET TRIGgERS for sga_areas_x_titulo ENABLED;

Tablas con datos sobre el titulo en cuestion :

select * from sga_orientaciones where carrera = ‘I1’;

UNQ I1 2014 14 0 Plan basico
UNQ I1 2014 14 1 Grupo 1 90 0
UNQ I1 2014 14 2 Grupo 2 90 0
UNQ I1 2014 14 3 Grupo 3 90 0

select * from sga_orient_alumno where carrera = ‘I1’;
UNQ I1 26778 2014 14 1
UNQ I1 28826 2014 14 2
UNQ I1 30063 2014 14 2
UNQ I1 23188 2014 14 3

select * from sga_orient_cambios where carrera = ‘I1’;

UNQ I1 28826 2014 14 2 2014-08-11 14:07:21 A
UNQ I1 30063 2014 14 2 2015-03-02 14:31:21 A 175/14 (CS)
UNQ I1 23188 2014 14 3 2015-03-02 14:34:48 A 175/14 (CS)
UNQ I1 29316 2014 14 1 2015-03-02 14:35:39 A 175/14 (CS)
UNQ I1 27873 2014 14 1 2015-03-02 14:36:10 A 175/14(CS)
UNQ I1 20684 2014 14 2 2015-03-02 14:36:43 A 175/14(CS)

  1. select * from sga_opt_gen_orie where carrera = ‘I1’; --139

UNQ I1 2014 14 3 1 00123 GE174 S
UNQ I1 2014 14 3 1 00489 GE174 S
UNQ I1 2014 14 3 1 00997 GE174 S

select * from sga_titulos_otorg where carrera = ‘I1’;

UNQ 26778 14 I1 26778 2014 1 28/12/2015 E28/17
UNQ 29524 14 I1 29524 2014 1 20/07/2017 E28/06
UNQ 37755 14 I1 37755 2014 1 20/07/2017 E28/06
UNQ 26521 14 I1 26521 2014 1 20/12/2017 E29/03
UNQ 28509 14 I1 28509 2014 1 27/12/2017 E29/03
UNQ 33861 14 I1 33861 2014 1 27/12/2017 E29/03
UNQ 29850 14 I1 29850 2014 1 16/07/2018 E19/04
UNQ 37693 14 I1 37693 2014 1 20/07/2018 E19/04

select * from sga_ciclos_orient where carrera = ‘I1’;

UNQ I1 2014 1 I1BO 14 0 70
UNQ I1 2014 1 I1B1 14 1 10
UNQ I1 2014 1 I1EA 14 1 80
UNQ I1 2014 1 I1EA 14 2 80
UNQ I1 2014 1 I1B2 14 2 10
UNQ I1 2014 1 I1B3 14 3 10
UNQ I1 2014 1 I1EB 14 3 80

select * from sga_atrib_mat_orie where carrera = ‘I1’;

UNQ I1 2014 1 14 1 00153
UNQ I1 2014 1 14 1 GE173
UNQ I1 2014 1 14 1 GE183
UNQ I1 2014 1 14 2 GE172
UNQ I1 2014 1 14 2 GE173
UNQ I1 2014 1 14 3 00109
UNQ I1 2014 1 14 3 GE174

En todos los casos nos dice que no se puede modificar ya que existen en otras tablas relacionadas o referenciadas, buscamos todas las relaciones y no encontramos mas tablas , Estaría faltando alguna otra tabla?

Tenes que hacer lo siguiente:

BEGIN WORK;
SET CONSTRAINT ALL DEFERRED;   -- Esto hace que las fk se evaluen en el commit, y una vez que llegaste al commit ya fueron reemplazadas todas las tablas

-- Deshabilitar triggers

-- Realizar updates

-- Habilitar triggers


COMMIT WORK;

Para buscar que tablas hacen referencia a la tabla de titulos. Fijate cual es la que esta relacionada con planes de estudio (que tienen referencia a las tablas
de carreras y planes):


 SELECT informix.systables.tabname,  informix.sysconstraints.constrname,   
    FROM informix.sysconstraints,   
         informix.systables,   
         informix.sysindexes,  
         informix.sysreferences,
         informix.systables st   
   WHERE ( informix.systables.tabid = informix.sysconstraints.tabid ) and  
         ( informix.sysconstraints.idxname = informix.sysindexes.idxname ) and  
         ( informix.sysconstraints.constrtype = 'R') and  
         ( informix.sysconstraints.constrid = informix.sysreferences.constrid ) and  
         ( informix.sysreferences.ptabid = st.tabid ) and  
         ( informix.systables.tabname in ('sga_titulos')  )
order by 1, 2;

Gracias !!!
Mañana lo probamos en desarrollo.

Saludos
Gaston Peluso