SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.07.2012 10:38:52

yeger
Участник
Зарегистрирован: 24.07.2012
Сообщений: 3

[Решено] Найти таблицу и поле Foreign key

Добрый день.
Как можно узнать с какой таблицей и соответственно с каким полем связан отдельно взятый Foreign key?

Поискал и в помощи и по форумам - ответа не нашел. В теории понимаю, что в "informatuion_schema" есть всё, но мне не кажется здравым давать пользователю права на N баз, когда ему нужна лишь одна.

Предметнее про проблему.
Есть таблица вида:

CREATE TABLE `refphisexercise` (
    `Id` INT(10) NOT NULL AUTO_INCREMENT,
    `SprName` CHAR(150) NULL DEFAULT NULL,
    `ParentId` INT(10) NULL DEFAULT NULL,
    PRIMARY KEY (`Id`),
    INDEX `FK_refphisexercise_refphisexercise` (`ParentId`),
    CONSTRAINT `FK_refphisexercise_refphisexercise` FOREIGN KEY (`ParentId`) REFERENCES `refphisexercise` (`Id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=10;
 

Как узнать поля, проблем нет, как узнать ключи - тоже нет вопросов, но как понять, что ключ именно "Foreign" и с какой он таблицей и полем связан?
Путь самурая - распарсить
SHOW CREATE TABLE
. Но уж больно извилист 8-)))

Подскажите, пожалуйста, есть ли способ?

Отредактированно yeger (24.07.2012 11:06:57)

Неактивен

 

#2 24.07.2012 10:53:42

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: [Решено] Найти таблицу и поле Foreign key

Удобнее всего INFORMATION_SCHEMA:

SELECT RC.TABLE_NAME, RC.REFERENCED_TABLE_NAME, KCU.COLUMN_NAME, KCU.REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU USING(CONSTRAINT_NAME)

Неактивен

 

#3 24.07.2012 10:57:47

yeger
Участник
Зарегистрирован: 24.07.2012
Сообщений: 3

Re: [Решено] Найти таблицу и поле Foreign key

rgbeast, спасибо.
Сделал 'View' по предложенному запросу. Соответственно и пользователю давать права на другие базы не пришлось.

Вопрос закрыт.

Отредактированно yeger (24.07.2012 11:05:40)

Неактивен

 

#4 24.07.2012 11:05:27

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: [Решено] Найти таблицу и поле Foreign key

На INFORMATION_SCHEMA отдельно давать права не нужно. Права есть у всех пользователей и каждый видит в INFORMATION_SCHEMA все таблицы, но в них только информацию о таблицах, к которым имеет доступ.

Неактивен

 

#5 24.07.2012 11:06:13

yeger
Участник
Зарегистрирован: 24.07.2012
Сообщений: 3

Re: [Решено] Найти таблицу и поле Foreign key

Понятно. спасибо.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson