PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL - Проверете съществуването на външен ключ, когато правите SELECT

Можете да използвате функция на PL/pgSQL, за да приложите това много евтино :

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;

Последно RETURN; не е задължително в този случай.

WARNING се повдига само ако вашата заявка не върне нито един ред. Не повдигам ERROR в примера, тъй като това би върнало цялата транзакция (но можете да направите това, ако отговаря на вашите нужди).

Добавихме примерен код към ръководството с Postgres 9.3 за да демонстрирате това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres SELECT, където WHERE е UUID или низ

  2. Защо не мога да правя заявки директно на jsonb_array_elements?

  3. задайте променлива само в psql-скрипт, ако не е посочена в командния ред

  4. PostgreSQL променя тип клеймо за време без часова зона -> с часова зона

  5. изберете/покажете последния вмъкнат сериен идентификатор в postgres