PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment savoir si une séquence a été initialisée dans cette session ?

Craig, a_horse et pozs ont fourni des informations qui peuvent vous aider à comprendre les principes d'utilisation des séquences. Outre la question comment allez-vous l'utiliser, voici une fonction qui retourne la valeur courante d'une séquence si elle a été initialisée ou null sinon.

Si une séquence seq n'a pas encore été initialisé, currval(seq) déclenche une exception avec 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')