sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur tar man reda på om en sekvens initierades i den här sessionen?

Craig, a_horse och pozs har tillhandahållit information som kan hjälpa dig att förstå principerna för att använda sekvenser. Bortsett från frågan hur ska du använda den, här är en funktion som returnerar aktuellt värde för en sekvens om den har initierats eller null på annat sätt.

Om en sekvens seq har inte initierats ännu, currval(seq) höjer undantag med 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')


  1. Bygga en maskininlärningsmodell med SQL Server, ML.NET och C#

  2. Hur exporterar jag med DATA_PUMP till S3-hinken?

  3. Hur man installerar phpMyAdmin på sin egen app

  4. Databasdistribution med uppdateringar