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

PostgreSQL - Kontroller, at fremmednøgle findes, når du laver en SELECT

Du kan udnytte en funktion i PL/pgSQL til at implementere dette meget billigt :

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;

En sidste RETURN; er valgfri i dette tilfælde.

WARNING hæves kun, hvis din forespørgsel ikke returnerer nogen rækker. Jeg rejser ikke en ERROR i eksemplet, da dette ville rulle hele transaktionen tilbage (men du kan gøre det, hvis det passer til dine behov).

Vi har tilføjet et kodeeksempel til manualen med Postgres 9.3 for at demonstrere dette.



  1. Opret orakelbord med automatisk commit til

  2. Command.Parameters[@name].Value Korrekt syntaks

  3. Sådan vælger du alt før/efter en bestemt karakter i MySQL – SUBSTRING_INDEX()

  4. MySQL-forespørgsel blev hængt og måtte dræbe processen