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.