PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL - Verifique se existe chave estrangeira ao fazer um SELECT


Você pode explorar um recurso do PL/pgSQL para implementar isso muito barato :
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;

Um RETURN; final é opcional neste caso.

O WARNING só é gerado se sua consulta não retornar nenhuma linha. Não estou gerando um ERROR no exemplo, pois isso reverteria toda a transação (mas você pode fazer isso se atender às suas necessidades).

Adicionamos um exemplo de código ao manual com Postgres 9.3 para demonstrar isso.