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

Hvordan finder man ud af, om en sekvens blev initialiseret i denne session?

Craig, a_horse og pozs har givet information, som kan hjælpe dig med at forstå principperne for brug af sekvenser. Bortset fra spørgsmålet, hvordan vil du bruge det, er her en funktion, der returnerer den aktuelle værdi af en sekvens, hvis den er blevet initialiseret eller null på anden måde.

Hvis en sekvens seq er ikke blevet initialiseret endnu, currval(seq) rejser undtagelse 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. generere dage fra datointerval

  2. T-SQL XOR-operatør

  3. Udfyld null-værdier med sidste ikke-null-beløb - Oracle SQL

  4. SQL Server 2008 -- udfør forespørgsler parallelt