PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PL/pgSQL prüft, ob eine Zeile existiert

Einfacher, kürzer, schneller: EXISTS .

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

Der Abfrageplaner kann bei der ersten gefundenen Zeile anhalten - im Gegensatz zu count() , wodurch alle (übereinstimmenden) Zeilen unabhängig gescannt werden. Macht einen Unterschied bei großen Tischen. Bei einer Bedingung für eine eindeutige Spalte ist der Unterschied gering:Nur eine Zeile ist qualifiziert und es gibt einen Index, um sie schnell nachzuschlagen.

Sie können einfach ein leeres SELECT verwenden Liste:

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

Die SELECT list hat keinen Einfluss auf das Ergebnis von EXISTS . Nur das Vorhandensein mindestens einer qualifizierenden Zeile ist von Bedeutung.