PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie finde ich heraus, ob in dieser Sitzung eine Sequenz initialisiert wurde?

Craig, a_horse und pozs haben Informationen bereitgestellt, die Ihnen helfen können, die Prinzipien der Verwendung von Sequenzen zu verstehen. Abgesehen von der Frage, wie Sie es verwenden werden, ist hier eine Funktion, die den aktuellen Wert einer Sequenz zurückgibt, wenn sie initialisiert wurde, oder sonst null.

Wenn eine Sequenz seq wurde noch nicht initialisiert, currval(seq) löst eine Ausnahme mit sqlstate 55000. aus

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')