30 NİSAN 2009, PERŞEMBE
Ben başvuru belirli bir tablo yabancı anahtar olan tüm tabloları Nasıl bulabilirim.MySQL: sütun VE bu yabancı anahtarlar için değerleri var mı?
Yabancı anahtar olarak diğer bazı tablolar başvurulan olan bir tablo var. Örneğin:
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`)
)
Şimdi, kaç tane yabancı anahtarları içeren tablolar Y gibi X veritabanına var bilmiyorum ve Z. oraya dönmek için kullanabileceğiniz bir SQL sorgu:
- X içine yabancı anahtar olan tabloların listesi
- VE bu tablo aslında yabancı anahtar değerleri var
Teşekkürler!
CEVAP
15 Temmuz 2009, ÇARŞAMBA
Al bakalım:
USE information_schema;
SELECT *
FROM
KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = 'X'
AND REFERENCED_COLUMN_NAME = 'X_id';
Eğer benzer bir tablo/sütun adları ile birden fazla veritabanı varsa da belirli bir veritabanı için sorgu sınırlamak isteyebilirsiniz:
SELECT *
FROM
KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = 'X'
AND REFERENCED_COLUMN_NAME = 'X_id'
AND TABLE_SCHEMA = 'your_database_name';
Bunu Paylaş:
Bunları nasıl belirli sütun adları ile...
Nasıl bir tablo veya sütun için tüm ya...
Nasıl geçici olarak MySQL yabancı anah...
Olası Olası iki tablo için MySQL yaban...
(Nasıl 3.6.21) mevcut bir sqlite tablo...