Craig, a_horse i pozs dostarczyli informacji, które mogą pomóc w zrozumieniu zasad używania sekwencji. Oprócz pytania, w jaki sposób zamierzasz go użyć, oto funkcja, która zwraca bieżącą wartość sekwencji, jeśli została zainicjowana lub null w przeciwnym razie.
Jeśli sekwencja seq
nie został jeszcze zainicjowany, currval(seq)
zgłasza wyjątek z 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')