Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách xem tất cả khóa ngoại (foreign keys) tham chiếu đến một bảng/cột trong MySQL

Truy vấn view INFORMATION_SCHEMA.KEY_COLUMN_USAGE để xem các khóa ngoại tham chiếu đến một bảng hoặc cột cụ thể.

Chuẩn bị: Tạo 2 bảng và khóa ngoại

-- Bảng con (child)
mysql> CREATE TABLE ForeignTable (
    -> id INT,
    -> name VARCHAR(200),
    -> Fk_pk INT
    -> );

-- Bảng cha (parent)
mysql> CREATE TABLE primaryTable1 (
    -> Fk_pk INT,
    -> DeptName VARCHAR(200),
    -> PRIMARY KEY(Fk_pk)
    -> );

-- Thêm khóa ngoại
mysql> ALTER TABLE ForeignTable ADD CONSTRAINT constFKPK FOREIGN KEY (Fk_pk) REFERENCES primaryTable1(Fk_pk);

1. Xem tất cả khóa ngoại tham chiếu đến một BẢNG

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_NAME = 'primarytable1';

Kết quả:

+--------------+-------------+-----------------+-----------------------+------------------------+
| TABLE_NAME   | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
+--------------+-------------+-----------------+-----------------------+------------------------+
| foreigntable | Fk_pk       | constFKPK       | primarytable1         | fk_pk                  |
+--------------+-------------+-----------------+-----------------------+------------------------+

2. Xem khóa ngoại tham chiếu đến một CỘT CỤ THỂ

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA = 'business'
  AND REFERENCED_TABLE_NAME = 'primarytable1'
  AND REFERENCED_COLUMN_NAME = 'fk_pk';

Kết quả tương tự, lọc chính xác theo database, bảng và cột tham chiếu.