PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come scoprire se una sequenza è stata inizializzata in questa sessione?

Craig, a_horse e pozs hanno fornito informazioni che possono aiutarti a comprendere i principi dell'uso delle sequenze. A parte la domanda su come usarlo, ecco una funzione che restituisce il valore corrente di una sequenza se è stata inizializzata o null in caso contrario.

Se una sequenza seq non è stato ancora inizializzato, currval(seq) solleva un'eccezione 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')