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

PostgreSQL - Überprüfen Sie, ob Fremdschlüssel vorhanden sind, wenn Sie eine SELECT-Anweisung ausführen

Sie können eine Funktion von PL/pgSQL nutzen, um dies sehr billig zu implementieren :

CREATE OR REPLACE FUNCTION f_select_from_some_tbl(int)
  RETURNS SETOF some_table AS
$func$
BEGIN
   RETURN QUERY
   SELECT * 
   FROM   some_table 
   WHERE  other_table_id = $1;

   IF NOT FOUND THEN
      RAISE WARNING 'Call with non-existing other_table_id >>%<<', $1;
   END IF;
END
$func$  LANGUAGE plpgsql;

Ein letztes RETURN; ist in diesem Fall optional.

Die WARNING wird nur ausgelöst, wenn Ihre Abfrage keine Zeilen zurückgibt. Ich melde keinen ERROR im Beispiel, da dies die gesamte Transaktion rückgängig machen würde (aber Sie können dies tun, wenn es Ihren Anforderungen entspricht).

Wir haben ein Codebeispiel hinzugefügt zum Handbuch mit Postgres 9.3 um dies zu demonstrieren.