El currval
devolverá el último valor generado para la secuencia dentro de la sesión actual. Entonces, si otra sesión genera un nuevo valor para la secuencia, aún puede recuperar el último valor generado por SU sesión, evitando errores.
Pero, para obtener el último valor generado en cualquier sesión, puede usar lo anterior:
SELECT last_value FROM your_sequence_name;
Tenga cuidado, si otra sesión usó el valor con una transacción no confirmada (o anulada) y usa este valor como referencia, es posible que obtenga un error. Incluso después de obtener este valor, es posible que ya esté desactualizado. En general, las personas solo necesitan el currval
o incluso el regreso de setval
.