sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo saber si una secuencia fue inicializada en esta sesión?

Craig, a_horse y pozs han proporcionado información que puede ayudarlo a comprender los principios del uso de secuencias. Además de la pregunta de cómo lo va a usar, aquí hay una función que devuelve el valor actual de una secuencia si se ha inicializado o nulo de lo contrario.

Si una secuencia seq aún no se ha inicializado, currval(seq) genera una excepción con sqlstate 55000.

create or replace function current_seq_value(seq regclass)
returns integer language plpgsql 
as $$
begin
    begin
        return (select currval(seq));
    exception
        when sqlstate '55000' then return null;
    end;
end $$;

select current_seq_value('my_table_id_seq')