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

Liệt kê tất cả các khóa ngoại PostgreSQL

Khóa ngoại có thể dựa trên nhiều cột, vì vậy conkeyconfkey trong tổng số pg_constraint là các mảng. Bạn phải bỏ sắp xếp các mảng để có được danh sách tên hoặc kiểu cột. Bạn có thể sử dụng các chức năng sau:

create or replace function get_col_names(rel regclass, cols int2[])
returns text language sql as $$
    select string_agg(attname, ', ' order by ordinality)
    from pg_attribute,
    unnest(cols) with ordinality
    where attrelid = rel
    and attnum = unnest
$$;

create or replace function get_col_types(rel regclass, cols int2[])
returns text language sql as $$
    select string_agg(typname, ', ' order by ordinality)
    from pg_attribute a
    join pg_type t on t.oid = atttypid,
    unnest(cols) with ordinality
    where attrelid = rel
    and attnum = unnest
$$;

Các hàm có thể rất tiện dụng khi truy vấn các ràng buộc và chỉ mục. Truy vấn của bạn rất hay và đơn giản với chúng:

select 
    conrelid::regclass,
    get_col_names(conrelid, conkey) col_names,
    get_col_types(conrelid, conkey) col_types,
    conname
from pg_constraint
where contype ='f';

 conrelid | col_names | col_types |        conname         
----------+-----------+-----------+------------------------
 products | image_id  | int4      | products_image_id_fkey
(1 row)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để liên kết bảng tính Google với PostgreSQL?

  2. Rails - lấy các đối tượng của các đối tượng CÓ bản sao

  3. \ d không thành công trong chương trình jdbc

  4. Làm thế nào để viết một mẫu T4 để tạo DTO từ Entityframework 6?

  5. Tìm kiếm toàn văn của Postgres với các từ đồng nghĩa