Как узнать, где внешний ключ использовался во всей базе данных mysql?

#mysql #sql

Вопрос:

У меня есть база данных Mysql, в которой у меня есть таблица с именем media, и несколько таблиц, каждая из которых имеет media_id в качестве внешнего ключа,

Я хочу, чтобы запрос возвращал таблицу, в которой используется определенный идентификатор media_id.

Комментарии:

1. Вам придется запрашивать каждую таблицу отдельно. Возможно, вы сможете выполнить все таблицы в одной инструкции SQL с помощью UNION ALL, но, к сожалению, нет никакой тайной магии, которая позволяла бы нам спросить, в каких таблицах упоминается это конкретное значение в этом конкретном столбце в этой конкретной таблице.

Ответ №1:

Вы можете попробовать использовать системные таблицы.

 SELECT
  object_name(parent_object_id) ParentTableName,
  object_name(referenced_object_id) RefTableName,
  name 
FROM sys.foreign_keys
WHERE parent_object_id = object_id('Tablename')