Migrar desde sistemas externos. Calendario Académico. Mesas de examen

Hola, estoy con una versión de scripts y sistemas 3.17.1 y me emite el siguiente error cuando llega al paso 06 del módulo de calendario académico

ERROR: el valor null para la columna «entidad» viola la restricción not null
2021/04/07 11:38:49 - 06_migrar_mesas_examen -   Detail: La fila que falla contiene (4851, MESA-VET-PG-CAC1, 2660, null, null, 5, migrado, S, 1995, null, N).

La porción que falla es la primera del script /migracion/Externos/02_Modulos/04_Calendario_academico/02_Migracion/06_migrar_mesas_examen.sql
– Mesas de Examen a migrar

INSERT INTO sga_mesas_examen (mesa_examen, nombre, elemento, ubicacion, observaciones, anio_academico)
    SELECT  m.mesa_examen, m.nombre, e.elemento, m.ubicacion , m.observaciones, m.anio_academico
       FROM ext.mig_mesas_examen as m
       JOIN sga_elementos as e ON m.actividad_codigo = e.codigo
      WHERE e.entidad_subtipo >= 50;

En la documentación de 3.17.0 el archivo mig_mesas no especifica la columna entidad. ¿Puede ser que sea el valor de entidad de la tabla sga_elementos? Si es así, modificando el script para que quede de la siguiente manera, ¿se podrá solucionar?


INSERT INTO sga_mesas_examen (mesa_examen, nombre, elemento, entidad, ubicacion, observaciones, anio_academico)
    SELECT  m.mesa_examen, m.nombre, e.elemento, e.entidad. m.ubicacion , m.observaciones, m.anio_academico
       FROM ext.mig_mesas_examen as m
       JOIN sga_elementos as e ON m.actividad_codigo = e.codigo
      WHERE e.entidad_subtipo >= 50;

Gracias

Hola Damian, el campo entidad se encuentra en varias tablas, entre ellas sga_mesas_examen. Este campo se carga por trigger de insert.
¿Tenes habilitados los triggers?
En este caso ese dato se carga con la función ftib_sga_mesas_examen que se ejecuta desde el trigger tib_sga_mesas_examen (INSERT BEFORE)

Ale, este esquema de negocio es un esquema copiado de producción. Evidentemente al hacer el dump del mismo no se realizó con los objetos de triggers relacionados.
Se puede hacer algo sin hacer nuevamente el proceso de resguardo de base y levantar el esquema?

Ejecutar todos los triggers que estan en el catálogo de la base de G3, carpeta BD\Ddl_nucleo\Triggers
Copia todos esos archivos en uno solo y luego desde un editor de sql levantas ese archivo y lo corres asi crea todos los triggres. Porque son varias las tablas que tienen triggers los cuales setean el campo “entidad” (sga_mesas_examen, sga_propuestas, sga_elementos, …)

Gracias Ale, como opción también dejo esta:
hacer el pg_dump con la opción –section=post-data
Luego editar el archivo y separar la definición de triggers y ejecutar ese archivo en el esquema negocio.
Por si le sirve a alguien, la fuente del inconveniente es que la base de datos estaba en una versión 11 de PG y se levantó en una versión 9.6 (la diferencia está en la llamada a las funciones/procedimientos)
Saludos