PHP MySQL запрос на изменение базы данных - PullRequest
0 голосов
/ 21 марта 2012

Я занимаюсь разработкой PHP-инструмента для ввода данных с MySQL в качестве базы данных.Однако база данных, несомненно, изменится во время ввода данных (многое еще предстоит сделать, поэтому мы запустили его так, чтобы он работал параллельно с другой разработкой).

Я построилSQL-запросы, так что php может автоматически:

  1. Определить, какие таблицы находятся в базе данных
  2. Список таблиц с определенным префиксом, так что только те, которые должен использовать ввод данных,

Однако я не могу понять (несмотря на проверку руководств и руководств по php, sql и mysql), как автоматически извлекать таблицы, которые связаны внешним ключом, чтобы ввод данных имелсписок предметов на выбор для данной таблицы.Короче говоря, как мне - используя php - определить:

  1. Любые внешние ключи для данной таблицы
  2. Имя таблицы, на которую указывает внешний ключ

БЕЗ жесткого кодирования имен таблиц в SQL-запросах?

1 Ответ

0 голосов
/ 21 марта 2012

Быстрый способ составить список ссылок на внешний ключ с помощью представления KEY_COLUMN_USAGE:

SELECT CONCAT( table_name, '.',
 column_name, ' -> ',
 referenced_table_name, '.',
 referenced_column_name ) AS list_of_fks
FROM information_schema.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA = (your schema name here)
 AND REFERENCED_TABLE_NAME is not null
ORDER BY TABLE_NAME, COLUMN_NAME;

В этом запросе предполагается, что ограничения и все ссылочные таблицы и таблицы ссылок находятся в одной схеме.

Для таблиц InnoDB использование поля «Комментарий» SHOW TABLE STATUS полезно для извлечения информации о внешнем ключе для более старых версий MySQL.

Я не знаю ни о каком другом способе, кроме вышеупомянутых 2 методов.

Удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...