[CERRADO] actualizacion en cascada en tablas dependientes de sga_carreras

Bueeenas…como estan todos!

Tengo el siguiente inconveniente:
Resulta que se pretende cambiar los códigos de carrera a causa de errores de carga en el armado de los planes de estudio. Estamos usando la versión 9.21 de Informix y la versión 2.6.3 de Siu-Guarani.

El tema es que ya hay inscripciones a cursadas, por ende, el campo carrera está en varias tablas que dependen de sga_carreras. Quisiera saber si existe alguna forma de poder actualizar en cascada las tablas dependientes, ya que por restricciones en las tablas, estas no permiten modificar la clave primaria.

Estuve buscando algo de información y aparentemente esta versión de Informix sólo permite borrar en cascada y no actualizar (la sentencia ON UPDATE CASCADE en la creación o alteración de una tabla da error, en cambio con ON DELETE CASCADE no hay inconveniente). Analicé la opción de eliminar las PK y actualizar tabla por tabla y luego volver a crearlas…

Les agradezco desde ya la atención y cuento con alguna sugerencia o posible solución si a alguien le ha sucedido algo parecido.

Que tengan buenos días!
Daniel.

Hola

No se puede.
Tienen mucha información cargada?
Es tan importante el codigo de carrera?

Emilio

Hola Emilio, gracias por contestar.

Parece que es importante el código de carrera ya que es utilizado en varias áreas de la dependencia. Son veinte carreras las que están cargadas y no hay mucha información. El problema surge porque se pretende migrar todos los datos del sistema anterior al Guarani y como ya vienen trabajando de ese modo, hay un poco de resistencia con los nuevos códigos de carrera.

De todos modos voy a estudiar bien el tema, en todo caso consulto qué tablas están involucradas y duplico la información de las tablas, con la nueva codificación por supuesto, y luego elimino los registros con los viejos códigos. Es posible que no demande tanto trabajo, ya que sólo hay datos de aspirantes e ingresantes 2011 inscriptos a cursadas solamente.

Si el resultado del análisis es factible, pruebo en implementar la solución y si es exitosa la comento en el foro por si sirve de ayuda para alguien que le suceda lo mismo.

Nuevamente gracias por la atención!
Daniel.

No parece ser tanta la información.
Fijate que tablas tienen datos y si no son muchas, lo que podes hacer es crear tablas de respaldo, sacar toda la info, cambiar la carrera e insertar de vuelta los datos.
Hay que tener cuidado con el orden de insersión de datos.

Además te aviso que en el siu-guarani se usa muy poco el código de carrera, en general se muestra el nombre de la misma.

Gracias Emilio, voy a evaluar tu sugerencia.
El tema del cambio de codificación es una desición de los usuarios del sistema, es natural que el código no es para nada relevante, al menos para mi, pero bueno…

Daniel:

Yo también evaluaría si no es más fácil y seguro hacer una base nueva, migrar las tablas de materias, carreras y quizás los ciclos, armar de nuevo los planes con las códificaciones correctas de carrera y finalmente migrar la mátricula (personas, carrera_aspira, requisitos, alumnos, cambios_plan) para finalmente inscribir a cursadas (casi mejor migrar la tabla sga_insc_cursadas cambiando los códigos de carrera).

Todo esto que dicho parece mucho, no creo que sea gran esfuerzo y no sé si no es menos que lo otro que pensabas hacer y probablemente más seguro.

Estos 2 select te pueden ayudar a ver la cantidad de tablas que tienen la columna carrera (solo faltaría agregar cuales tienen datos en la condición). A mi me da que son 131 tablas en mi base.

select "select * from " || b.tabname || “;” as select, b.tabname, a.colname from syscolumns a inner join systables b on a.tabid = b.tabid where tabname like “sga_%” and colname like “%carr%” order by tabname;

select b.tabname from syscolumns a inner join systables b on a.tabid = b.tabid where colname = “%carr%” and tabname like “sga_%” order by tabname

Saludos

Gustavo

Daniel:

Como terminò este tema? Como lo solucionaste?

Me interesa ya que tengo un caso similar.

Saludos

Gustavo