Error en mig_Planes - 09_correlativ_esp

Hola
Estamos haciendo pruebas de migración de G2 a G3.20.0
Al ejecutar 02_Modulos/30_Planes/02_Migracion/09_correlativ_esp.sql emite el siguiente error:

2022/06/10 08:24:44 - 09_correlativ_esp - ERROR: llave duplicada viola restricción de unicidad «pk_sga_reglas» 2022/06/10 08:24:44 - 09_correlativ_esp - Detail: Ya existe la llave (regla)=(1003). 2022/06/10 08:24:44 - 09_correlativ_esp - Where: sentencia SQL: «INSERT INTO sga_reglas(nombre,regla_tipo,php_clase,mensaje_usuario,mensaje_validacion) 2022/06/10 08:24:44 - 09_correlativ_esp - VALUES(cursor1.funcion_validacion,3,cursor1.funcion_validacion,'migrado','No cumplio la regla' || cursor1.funcion_validacion || '')» 2022/06/10 08:24:44 - 09_correlativ_esp - función PL/pgSQL mig.fx_mig_correlativ_esp() en la línea 20 en sentencia SQL

Mirando en la base, el último valor de secuencia de sga_reglas_seq efectivamente es 1003. Pero la tabla sga_reglas, tiene hasta el registro 1004 inclusive.

Ahora lo actualizo a mano al número de secuencia. Pero por qué puede suceder esto? Y cual sería la manera correcta de corregirlo?

Muchas gracias
Iris

Que hayas agregado una regla en la base registrando el id en el campo regla y luego de eso no actualizaste la secuencia?

Hola Alejandro

Recibí la base de G3 con las responsables académicas ya cargadas. Para luego migrar sobre la que estoy trabajando.
Tenía reglas personalizadas incluidas.

Cómo corresponde actualizar las secuencias?
Porque también tengo para agregar un par de reglas, y luego de eso también me correspondería volver a actualizar, correcto?

Gracias!!
Saludos
Iris

Si cuando agregan un registro en una tabla donde hay un campo con una secuencia, en este caso la tabla sga_reglas, campo regla (obtiene el valor de la secuencia sga_reglas_seq), y no indican valor en el campo “regla”, entonces el valor se obtiene de la secuencia y esta se actualiza automaticamente.
Si en cambio envian un valor en el campo regla, entonces no se usa la secuencia y deben actualizarla.
En el catalogo de la base existen las querys para actualizar secuencias, en este caso ejecutar:

SELECT setval('sga_reglas_seq',get_mayor(1000, (SELECT MAX(regla) FROM sga_reglas)))

Buenísimo!
Muchas gracias Alejandro!!
Saludos

Iris