Error al ejecutar el script util_cambiar_docente para docentes duplicados

Estimados,
al ejecutar el script ‘util_cambiar_docente.sql’ me devuelve el siguiente error:

ERROR: Se produjo un error al cambiar el docente. Error: 23505 - llave duplicada viola restricción de unicidad «pk_sga_docentes_resp» CONTEXT: función PL/pgSQL util_cambiar_docente(integer,integer) en la línea 47 en RAISE SQL state: P0001

En la línea 47 se ejecuta:
UPDATE sga_clases_docentes SET docente = pDocenteNuevo WHERE docente = pDocenteaReemplazar;

Espero sus sugerencias.
Saludos cordiales.

Hola Gustavo,

Probá comentando la línea “UPDATE sga_docentes_resp SET docente = pDocenteNuevo WHERE docente = pDocenteaReemplazar;” del script. Al parecer el docente nuevo ya tiene asignada alguna de las responsabilidades del docente a reemplazar.

Saludos, Florencia.

Antes de la sentencia:

  UPDATE sga_clases_docentes SET docente = pDocenteNuevo WHERE docente = pDocenteaReemplazar;

Agrega esta otra:

DELETE FROM sga_clases_docentes 
     WHERE docente = pDocenteaReemplazar 
          AND EXISTS (SELECT 1 FROM sga_clases_docentes as a WHERE a.clase = sga_clases_docentes.clase AND a.docente = pDocenteNuevo);

El problema que los dos ids de docentes estan asignados en la misma comision. Seguramente este error te de igual cuando quiera actualizar las tablas sga_docentes_comision y otras…

Carga una solicitud en el GDS y te enviamos esta funcion con estos ajustes.
Saludos.

2

Estimados Florencia y Alejandro,
apliqué lo indicado, pero me devuelve el error:

ERROR: Se produjo un error al cambiar el docente. Error: 23503 - update o delete en «sga_docentes_comision» viola la llave foránea «fk_sga_docentes_dedicacion_hs_sga_docentes_comision» en la tabla «sga_docentes_dedicacion_hs»
CONTEXT: función PL/pgSQL util_cambiar_docente(integer,integer) en la línea 47 en RAISE
SQL state: P0001

Genero un GDS.
Saludos cordiales

Si es como te comente en el mensaje anterior, este delete hay que agregarlo en otras tablas.
Enviamos funcion con la modificación por la solicitud ingresada.
Saludos.

Estimado Alejandro,
el script recibido no funciona para un pequeño grupo de docentes. El error que surge es:

ERROR: Se produjo un error al cambiar el docente. Error: 23503 - inserción o actualización en la tabla «sga_docentes_dedicacion_hs» viola la llave foránea «fk_sga_docentes_dedicacion_hs_sga_docentes_comision»
CONTEXT: función PL/pgSQL util_cambiar_docente(integer,integer,boolean) en la línea 128 en RAISE
SQL state: P0001

Saludos cordiales

Hola Gustavo. Ese script fue actualizado y se corrigió ese error.
Enviamos nuevamente la funcion por la solicitud 56168

Ok. Gracias.