Определить ограничения InnoDB FK без информации_схема - PullRequest
0 голосов
/ 16 августа 2011

Я пишу некоторый код для проверки структуры базы данных MySQL и мне нужна информация об ограничениях внешнего ключа (для таблиц InnoDB).

Есть два способа сделать это:

  1. Разобрать результаты SHOW CREATE TABLE X
  2. Использование INFORMATION_SCEMA.REFERENTIAL_CONSTRAINTS

К сожалению, для второго варианта требуется MySQL 5.1.16 или более поздняя версия, поэтому я не могу использовать его, если только / пока не смогу убедить нашего сервера обновить его, и, хотя я, вероятно, могу выбрать вариант 1, он кажется беспорядочным и без записи полный анализатор SQL Я не уверен, что мой код всегда будет работать с любой таблицей.

Есть ли другой способ получить эту информацию?

Спасибо

1 Ответ

1 голос
/ 16 августа 2011

Из онлайнового руководства по MySQL 5.0 :

Вы также можете отобразить ограничения внешнего ключа для такой таблицы, как это:

SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';

Ограничения внешнего ключа перечислены в столбце Комментарий выход.


Плакат указывает, что он не предоставляет ON UPDATE и ON DELETE информацию, которая является важной частью поведения внешнего ключа.

Другой вариант:

Поскольку вы управляете соответствующим кодом, возможно ли настроить другой экземпляр MySQL в той же среде, которая является версией 5.1+? Если так, давайте назовем этот экземпляр dummy . Запустите SHOW CREATE TABLE в действующей базе данных. Затем на dummy запустите DROP TABLE IF EXIST с последующим выводом из запроса SHOW CREATE TABLE.

Теперь вы можете использовать INFORMATION_SCHEMA в базе данных dummy для получения информации.

...