sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL - Kontrollera att främmande nyckel finns när du gör en SELECT

Du kan utnyttja en funktion i PL/pgSQL för att implementera detta mycket 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 sista RETURN; är valfritt i det här fallet.

WARNING höjs bara om din fråga inte returnerar några rader. Jag visar inte ett ERROR i exemplet, eftersom detta skulle rulla tillbaka hela transaktionen (men du kan göra det om det passar dina behov).

Vi har lagt till ett kodexempel till manualen med Postgres 9.3 för att visa detta.



  1. MySQL - Unik främmande nyckel

  2. JDBC Batch insert undantagshantering

  3. Hur man förfinar JSON-formaterade frågeresultat i SQLcl (Oracle)

  4. Använder du LIMIT inom GROUP BY för att få N resultat per grupp?