В MySQL, как я могу получить список всех ограничений внешнего ключа, указывающих на конкретную таблицу? конкретный столбец? Это то же самое, что и вопрос Oracle , но для MySQL.
mysql
foreign-keys
innodb
Кристиан Оудард
источник
источник
where REFERENCED_TABLE_SCHEMA = 'mydatabase' and REFERENCED_TABLE_NAME = 'mytable'
РЕДАКТИРОВАТЬ: Как указано в комментариях, это не правильный ответ на вопрос ОП, но полезно знать эту команду. Этот вопрос появился в Google для того, что я искал, и решил, что я оставлю этот ответ для других.
Я нашел этот ответ здесь: MySQL: показать ограничения на таблицы команд
Мне нужен был этот способ, потому что я хотел увидеть, как функционирует ФК, а не просто посмотреть, существует он или нет.
источник
<yourtable>
, а не все ограничения, на которые указывают<yourtable>
.display foreign keys mysql
в Google, может быть, поэтому;)Если вы используете InnoDB и определили FK, вы можете запросить базу данных information_schema, например:
источник
Публикация старого ответа для добавления полезной информации.
У меня была похожая проблема, но я также хотел увидеть CONSTRAINT_TYPE вместе с именами таблицы и столбца REFERENCED. Так,
Чтобы увидеть все ФК в вашей таблице:
Чтобы увидеть все таблицы и FK в вашей схеме:
Чтобы увидеть все FK в вашей базе данных:
Помните!
Это использует механизм хранения InnoDB. Если вы не можете увидеть какие-либо внешние ключи после их добавления, возможно, это потому, что ваши таблицы используют MyISAM.
Проверить:
Чтобы исправить, используйте это:
источник
В качестве альтернативы ответу Node, если вы используете InnoDB и определили FK, вы можете запросить базу данных information_schema, например:
для внешних ключей из <таблицы> или
для внешних ключей в <table>
Вы также можете получить UPDATE_RULE и DELETE_RULE, если хотите.
источник
Это решение будет отображать не только все отношения, но также и имя ограничения, которое требуется в некоторых случаях (например, ограничение на удаление):
Если вы хотите проверить таблицы в конкретной базе данных, в конце запроса добавьте имя схемы:
Аналогично, для конкретного имени столбца добавьте
в конце запроса.
Вдохновленный этим постом здесь
источник
Использование REFERENCED_TABLE_NAME не всегда работает и может иметь значение NULL. Следующий запрос может работать вместо:
источник
Быстрый способ перечислить свои FK (ссылки на внешние ключи), используя
Этот запрос предполагает, что ограничения и все ссылочные таблицы и таблицы ссылок находятся в одной и той же схеме.
Добавьте свой комментарий.
Источник: официальное руководство по MySQL.
источник
Решение, которое я нашел, хрупкое; он основан на соглашении об именовании внешних ключей django.
Затем в оболочке
источник
Чтобы найти все таблицы, содержащие определенный внешний ключ, такой как
employee_id
источник
Если вы также хотите получить имя столбца внешнего ключа:
источник