SORU
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:

  1. X içine yabancı anahtar olan tabloların listesi
  2. 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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • infodirt

    infodirt

    11 Mart 2009
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008
  • Marques Brownlee

    Marques Brow

    21 Mart 2008