PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PostgreSQL - Kiểm tra khóa ngoại tồn tại khi thực hiện SELECT

Bạn có thể khai thác một tính năng của PL / pgSQL để thực hiện điều này rất rẻ :

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; cuối cùng là tùy chọn trong trường hợp này.

WARNING chỉ được nâng lên nếu truy vấn của bạn không trả về bất kỳ hàng nào. Tôi không nêu ra ERROR trong ví dụ, vì điều này sẽ khôi phục toàn bộ giao dịch (nhưng bạn có thể làm điều đó nếu nó phù hợp với nhu cầu của bạn).

Chúng tôi đã thêm một ví dụ mã sang hướng dẫn sử dụng với Postgres 9.3 để chứng minh điều này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự cố với phạm vi thời gian vô hạn trong Rails

  2. Nhập kết xuất MySQL vào cơ sở dữ liệu PostgreSQL

  3. Chi phí công khai PostgreSQL miễn phí

  4. Không thể truy cập các phương thức phiên bản Sequelize

  5. Đặt hàng chuỗi varchar dưới dạng số