Rumah >pangkalan data >tutorial mysql >Bagaimana Mencari Jadual dengan Kekunci Asing Merujuk Lajur Tertentu?

Bagaimana Mencari Jadual dengan Kekunci Asing Merujuk Lajur Tertentu?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-16 10:19:10479semak imbas

How to Find Tables with Foreign Keys Referencing a Specific Column?

Mencari Jadual dengan Kekunci Asing Merujuk Lajur Tertentu

Dalam pangkalan data hubungan, adalah perkara biasa untuk jadual mempunyai kunci asing yang merujuk kepada yang lain kunci utama jadual. Ini membolehkan perhubungan antara entiti diwujudkan dan dikuatkuasakan. Walau bagaimanapun, adalah sukar untuk menentukan jadual yang mempunyai kunci asing yang merujuk kepada lajur tertentu.

Untuk menangani cabaran ini, kami menerangkan kaedah untuk mengenal pasti jadual yang mempunyai kunci asing merujuk lajur jadual tertentu dan mempunyai nilai sebenar dalam kunci asing tersebut.

Pertimbangkan contoh skema pangkalan data berikut:

CREATE TABLE `X` (
    `X_id` int NOT NULL auto_increment,
    `name` varchar(255) NOT NULL,
    PRIMARY KEY  (`X_id`)
);
CREATE TABLE `Y` (
    `Y_id` int(11) NOT NULL auto_increment,
    `name` varchar(255) NOT NULL,
    `X_id` int DEFAULT NULL,
    PRIMARY KEY  (`Y_id`),
    CONSTRAINT `Y_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
);
CREATE TABLE `Z` (
    `Z_id` int(11) NOT NULL auto_increment,
    `name` varchar(255) NOT NULL,
    `X_id` int DEFAULT NULL,
    PRIMARY KEY  (`Z_id`),
    CONSTRAINT `Z_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
);

Dalam ini skema, kedua-dua jadual Y dan Z mempunyai kunci asing yang merujuk kepada lajur X_id jadual X. Untuk mendapatkan semula senarai jadual tersebut dan mengenal pasti yang mana mempunyai nilai dalam kunci asing:

SELECT *
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_NAME = 'X'
  AND REFERENCED_COLUMN_NAME = 'X_id';

Pertanyaan ini akan mengembalikan maklumat tentang semua jadual yang mempunyai kunci asing yang merujuk kepada lajur jadual yang ditentukan. Ia juga memastikan bahawa kunci asing mempunyai sekurang-kurangnya satu nilai yang berkaitan.

Untuk mengecilkan lagi hasil kepada pangkalan data tertentu, pertanyaan yang diubah suai berikut boleh digunakan:

SELECT *
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_NAME = 'X'
  AND REFERENCED_COLUMN_NAME = 'X_id'
  AND TABLE_SCHEMA = 'your_database_name';

Di sini, your_database_name hendaklah digantikan dengan nama pangkalan data sebenar di mana jadual berada.

Atas ialah kandungan terperinci Bagaimana Mencari Jadual dengan Kekunci Asing Merujuk Lajur Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn