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

Tìm tên bảng được tham chiếu bằng cách sử dụng tên bảng, trường và lược đồ

Nếu bạn không cần thiết bị này có thể di động sang một RDBMS khác thì rất nhiều nhanh hơn và đơn giản hơn để sử dụng các bảng danh mục trong pg_catalog thay vì giản đồ thông tin chuẩn:

SELECT c.confrelid::regclass::text AS referenced_table
     , c.conname AS fk_name
     , pg_get_constraintdef(c.oid) AS fk_definition
FROM   pg_attribute a 
JOIN   pg_constraint c ON (c.conrelid, c.conkey[1]) = (a.attrelid, a.attnum)
WHERE  a.attrelid = '"Schema2"."TableB"'::regclass   -- table name
AND    a.attname  = 'A_Id'                           -- column name  
AND    c.contype  = 'f'
ORDER  BY conrelid::regclass::text, contype DESC;

Lợi nhuận:

 referenced_table | fk_name  |  fk_definition
------------------+-------------------------+----------------------------------------------
 Schema1.TableA   | b1_fkey  | FOREIGN KEY ("B_id") REFERENCES "Schema1"."TableA"("A_id")

Ghi chú

  • Hai cột bổ sung chỉ dành cho định hướng. Theo Q của bạn, bạn chỉ cần cột đầu tiên.

  • Điều này trả về tất cả các bảng được tham chiếu bởi tất cả các khóa ngoại liên quan đến tên cột đã cho - bao gồm các ràng buộc FK trên nhiều cột.

  • Tên tự động đủ điều kiện giản đồ hay không tùy theo khả năng hiển thị được đặt bởi search_path hiện tại . Tên cũng được tự động thoát ra khi cần thiết (ký tự không hợp lệ hoặc viết hoa, từ dành riêng, ...).

Xem chi tiết của pg_constraintpg_attribute trong sách hướng dẫn. Và nhiều hơn nữa về các loại định danh đối tượng.

Có liên quan:

  • Ràng buộc thả PostgreSQL với tên không xác định
  • Truy xuất tất cả PK và FK



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. In ra màn hình trong tệp .sql postgres

  2. Cách Atan2 () hoạt động trong PostgreSQL

  3. Làm cách nào để thêm nguồn dữ liệu PostgreSQL vào WildFly 9.0?

  4. Laravel:Lỗi [PDOException]:Không thể tìm thấy trình điều khiển trong PostgreSQL

  5. Trừ các tháng cho một ngày trong PostgreSQL