PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak sprawdzić, czy sekwencja została zainicjowana w tej sesji?

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak określić bieżącą działającą bazę danych dla skryptu inicjującego kontenera docker postgres?

  2. Jak uzyskać MIN() dwóch pól w Postgresie?

  3. Psql nie mógł połączyć się z serwerem:Brak takiego pliku lub katalogu, błąd 5432?

  4. Uzyskaj definicję funkcji, sekwencji, typu itp. w Postgresql za pomocą zapytania SQL

  5. Uzyskaj sygnaturę czasową z łączenia kolumn dnia i godziny