sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL - Controleer of de externe sleutel bestaat bij het uitvoeren van een SELECT

U kunt een functie van PL/pgSQL gebruiken om dit zeer goedkoop te implementeren :

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;

Een laatste RETURN; is in dit geval optioneel.

De WARNING wordt alleen gegenereerd als uw zoekopdracht geen rijen retourneert. Ik plaats geen ERROR in het voorbeeld, omdat dit de hele transactie zou terugdraaien (maar u kunt dat doen als het aan uw behoeften voldoet).

We hebben een codevoorbeeld toegevoegd naar de handleiding met Postgres 9.3 om dit aan te tonen.



  1. Hoe gegevens extrapoleren door Mysql en in een array plaatsen?

  2. JDBC-verbindingstime-out kan niet opnieuw verbinding maken

  3. Hoe een mysql-database naar een andere computer te exporteren?

  4. I/O-fout:SSO mislukt:native SSPI-bibliotheek niet geladen