PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como descobrir se uma sequência foi inicializada nesta sessão?


Craig, a_horse e pozs forneceram informações que podem ajudá-lo a entender os princípios do uso de sequências. Além da questão de como você vai usá-lo, aqui está uma função que retorna o valor atual de uma sequência se ela foi inicializada ou nula caso contrário.

Se uma sequência seq ainda não foi inicializado, currval(seq) gera exceção com 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')