MySQL: получить список таблиц, которые ссылаются на удаленную строку - PullRequest
1 голос
/ 08 апреля 2011

Скажем, я удаляю (или, возможно, редактирую) строку в определенной таблице.Мне нужно получить список всех таблиц, которые ссылаются на эту конкретную строку (в основном, другие таблицы будут иметь FK для таблицы, из которой строка была удалена).Как мне это сделать?Я использую InnoDB.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2011

Еще один вариант (пример с sakila дБ, таблица actor) -

SELECT table_schema, table_name, referenced_table_schema, referenced_table_name
FROM
  information_schema.key_column_usage
WHERE
  referenced_table_schema = 'sakila' AND referenced_table_name = 'actor'
GROUP BY
  constraint_schema, constraint_name;

+--------------+------------+-------------------------+-----------------------+
| table_schema | table_name | referenced_table_schema | referenced_table_name |
+--------------+------------+-------------------------+-----------------------+
| sakila       | film_actor | sakila2                 | actor                 |
+--------------+------------+-------------------------+-----------------------+
0 голосов
/ 08 апреля 2011

Посмотрите на этот запрос

select c.table_schema,u.table_name,u.column_name,u.referenced_column_name
from information_schema.table_constraints as c
inner join information_schema.key_column_usage as u
using( constraint_schema, constraint_name )
where c.constraint_type = 'FOREIGN KEY'
and u.referenced_table_schema='your_db_name'
and u.referenced_table_name = 'your_table_name'
order by c.table_schema,u.table_name;
...