Inconveniente en Mig Planes 30_Planes

Hola a todos, les comento que tengo este error,


error_planes_propuestas.zip (1.25 KB)

El error es el siguiente:
ERROR: inserción o actualización en la tabla «sga_planes» viola la llave foránea «fk_sga_planes_sga_propuestas»
2019/06/03 15:21:07 - 02_sga_planes - Detail: La llave (propuesta)=(66) no está presente en la tabla «sga_propuestas».

Ahi dice que se intenta registrar un plan de estudios para la propuesta nro 66 que no existe.
¿Las propuestas las dieron de alta por sistema o las migraron?
En el módulo “25_Propuestas”, script nro 2 se debió migrar esa propuesta.

Hola Alejando, como estas? las propuestas fueron migradas. En la tabla sga_propuestas solo estan hasta la 48, sin embargo al hacer el select de planes dice por ejemplo plan 1 propuesta 66, aparentemente no libera las posiciones, es decir la primera vez cuenta desde el 1 pero si yo vuelvo a migrar me asigna numeros mas altos. te mando el contenido de sga_propuestas y el resultado del select de planes que me da error.


propuestas-planes.zip (31.5 KB)

Entonces no migro algunas propuestas, por lo menos de la 49 a la 66
Por favor envia lo siguiente:

SELECT  carrera, nombre FROM mig.sga_carreras ORDER BY carrera;
SELECT *  FROM mig._cnv_pk_propuestas ORDER BY propuesta;
SELECT  propuesta, codigo, nombre FROM sga_propuestas ORDER BY propuesta;

Por favor envialo todo en un txt.

Ahi te envio lo solicitado. Saludos


consulta.zip (2.61 KB)

Me parece que corriste dos veces el script que pasa los datos de la tabla mig.sga_carreras a mig._cnv_pk_propuestas.
Fijate que en esta ultima esta marcando en todas las carreras que ya existe una propuesta con el mismo codigo.

El error que da es que la propuesta 66 no existe, y en la tabla mig._cnv_pk_propuestas dice:

66;"UASJ";"027";"";0;1;"[b]Existe una propuesta en G3 con el mismo nombre que la carrera de G2[/b]";66

Si la propuesta con codigo 027 ya existe en Guarani 3, entonces hay que actualizar el campo propuesta de la tabla mig._cnv_pk_propuestas, es decir:

UPDATE mig._cnv_pk_propuestas
    SET propuesta =  (SELECT propuesta FROM sga_propuestas WHERE codigo = mig._cnv_pk_propuestas.carrera)
              migrar = 1,
              existe = 0,
             observaciones = ''
WHERE  migrar = 0 
      AND existe = 1
      AND EXISTS (SELECT 1 FROM sga_propuestas WHERE codigo = mig._cnv_pk_propuestas.carrera);

Hola Alejandro, si era eso. Mil Gracias. Saludos