Error al actualizar nro de secuencias

Buenos días!

Al querer ejecutar el siguiente código que indica que debemos ejecutar postmigración https://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.19.0/Migracion/Desde_SIU_Guarani_2/Migracion/consideraciones_finales#Actualizaci.C3.B3n_Secuencia_de_Nros_de_Transacci.C3.B3n


SET search_path = negocio;

SELECT setval('aud_nro_transaccion_seq',
get_mayor(currval('aud_nro_transaccion_seq')::integer,                    
(SELECT MAX(t.a) FROM (
SELECT MAX(nro_transaccion) FROM int_sq_morosos UNION 
SELECT MAX(nro_transaccion) FROM sga_constancias_solicitud UNION 
SELECT MAX(nro_transaccion) FROM sga_insc_cursada UNION 
SELECT MAX(nro_transaccion) FROM sga_insc_cursada_actividad UNION 
SELECT MAX(nro_transaccion) FROM sga_insc_cursada_log UNION 
SELECT MAX(nro_transaccion_log) FROM sga_insc_cursada_log UNION 
SELECT MAX(nro_transaccion) FROM sga_insc_examen UNION 
SELECT MAX(nro_transaccion) FROM sga_insc_examen_log UNION 
SELECT MAX(nro_transaccion_log) FROM sga_insc_examen_log UNION 
SELECT MAX(nro_transaccion) FROM sga_propuestas_aspira UNION 
SELECT MAX(nro_transaccion) FROM sga_propuestas_aspira_log UNION 
SELECT MAX(nro_transaccion_log) FROM sga_propuestas_aspira_log UNION 
SELECT MAX(nro_transaccion) FROM sga_reinscripciones
) as t (a))::integer
));

Arroja el siguiente error: ERROR: currval de la secuencia «aud_nro_transaccion_seq» no está definido en esta sesión
SQL state: 55000

Hola Marcela,

Proba reemplazar:

currval('aud_nro_transaccion_seq')::integer

por:

SELECT last_value::integer FROM aud_nro_transaccion_seq

quedaría:


SELECT setval('aud_nro_transaccion_seq',
get_mayor(SELECT last_value::integer FROM aud_nro_transaccion_seq,
**************

Referencia:
https://www.postgresql.org/message-id/35514.200.35.66.77.1086819763.squirrel@mail.venezolanadeavaluos.com
https://stackoverflow.com/questions/12481448/currval-has-not-yet-been-defined-this-session-how-to-get-multi-session-sequence

saludos.
2

Hola Leonel!


SET search_path = negocio;

SELECT setval('aud_nro_transaccion_seq',
get_mayor(SELECT last_value::integer FROM aud_nro_transaccion_seq),                   
(SELECT MAX(t.a) FROM (
SELECT MAX(nro_transaccion) FROM int_sq_morosos UNION
SELECT MAX(nro_transaccion) FROM sga_constancias_solicitud UNION
SELECT MAX(nro_transaccion) FROM sga_insc_cursada UNION
SELECT MAX(nro_transaccion) FROM sga_insc_cursada_actividad UNION
SELECT MAX(nro_transaccion) FROM sga_insc_cursada_log UNION
SELECT MAX(nro_transaccion_log) FROM sga_insc_cursada_log UNION
SELECT MAX(nro_transaccion) FROM sga_insc_examen UNION
SELECT MAX(nro_transaccion) FROM sga_insc_examen_log UNION
SELECT MAX(nro_transaccion_log) FROM sga_insc_examen_log UNION
SELECT MAX(nro_transaccion) FROM sga_propuestas_aspira UNION
SELECT MAX(nro_transaccion) FROM sga_propuestas_aspira_log UNION
SELECT MAX(nro_transaccion_log) FROM sga_propuestas_aspira_log UNION
SELECT MAX(nro_transaccion) FROM sga_reinscripciones
) as t (a))::integer
);

Me da el sigueinte error:

ERROR: error de sintaxis en o cerca de «SELECT»
LINE 2: get_mayor(SELECT last_value::integer FROM aud_nro_transaccio…
^
SQL state: 42601
Character: 52

Hola Marcela, probalo así:


SET search_path = negocio;

SELECT setval('aud_nro_transaccion_seq',
get_mayor((SELECT last_value FROM aud_nro_transaccion_seq)::integer,                    
(SELECT MAX(t.a) FROM (
SELECT MAX(nro_transaccion) FROM int_sq_morosos UNION 
SELECT MAX(nro_transaccion) FROM sga_constancias_solicitud UNION 
SELECT MAX(nro_transaccion) FROM sga_insc_cursada UNION 
SELECT MAX(nro_transaccion) FROM sga_insc_cursada_actividad UNION 
SELECT MAX(nro_transaccion) FROM sga_insc_cursada_log UNION 
SELECT MAX(nro_transaccion_log) FROM sga_insc_cursada_log UNION 
SELECT MAX(nro_transaccion) FROM sga_insc_examen UNION 
SELECT MAX(nro_transaccion) FROM sga_insc_examen_log UNION 
SELECT MAX(nro_transaccion_log) FROM sga_insc_examen_log UNION 
SELECT MAX(nro_transaccion) FROM sga_propuestas_aspira UNION 
SELECT MAX(nro_transaccion) FROM sga_propuestas_aspira_log UNION 
SELECT MAX(nro_transaccion_log) FROM sga_propuestas_aspira_log UNION 
SELECT MAX(nro_transaccion) FROM sga_reinscripciones
) as t (a))::integer
));

saludos.
2

Leonel,
Ahí se ejecutó sin errores.
Muchas gracias!!