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

Sprawdzanie PL/pgSQL, czy wiersz istnieje

Prościej, krócej, szybciej: EXISTS .

IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
  -- do something
END IF;

Planer zapytań może zatrzymać się na pierwszym znalezionym wierszu — w przeciwieństwie do count() , który niezależnie przeskanuje wszystkie (pasujące) wiersze. Robi różnicę przy dużych stołach. Różnica jest niewielka w przypadku warunku w unikalnej kolumnie:kwalifikuje się tylko jeden wiersz i istnieje indeks do szybkiego wyszukiwania.

Możesz po prostu użyć pustego SELECT lista:

IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...

SELECT lista nie ma wpływu na wynik EXISTS . Liczy się tylko istnienie co najmniej jednego kwalifikującego się wiersza.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd PostgreSQL:Relacja już istnieje

  2. Uzyskaj domyślną wartość szeregową po INSERT wewnątrz PL/pgSQL

  3. Najlepsze narzędzia GUI dla PostgreSQL

  4. Wydajność TPC-H od PostgreSQL 8.3

  5. Właściwe zapytanie, aby uzyskać aktualną liczbę połączeń w bazie danych PostgreSQL