Как найти связанные таблицы MySQL? Т.е. например, при удалении данных из одной таблицы удаляются данные из таблиц, у которых есть ограничение ON DELETE CASCADE:
CREATE TABLE `owners_p_map` (
...
CONSTRAINT `fk_owners_p_map_owners` FOREIGN KEY (`owners_id`) REFERENCES `owners` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
Как можно по названию таблицы найти все такие таблицы, которые от неё зависят (т.е. у которых будут удаляться записи при удалении строки из этой таблицы, как в случае выше по названию owners_p_map найти owners)?
SELECT DISTINCT CONCAT(TABLE_SCHEMA,'.',TABLE_NAME) `table`
, CONCAT(REFERENCED_TABLE_SCHEMA,'.',REFERENCED_TABLE_NAME) ref_table
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA='MyDataBase'
AND REFERENCED_TABLE_NAME IS NOT NULL;
А ещё лучше - аналогичный запрос к INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS:
SELECT CONCAT( CONSTRAINT_SCHEMA,
'.',
TABLE_NAME,
' REFERENCES ',
UNIQUE_CONSTRAINT_SCHEMA,
'.',
REFERENCED_TABLE_NAME,
' ON DELETE ',
DELETE_RULE,
' ON UPDATE ',
UPDATE_RULE
) `references`
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA='MyDataBase';
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники