2012-03-21 3 views
0

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

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

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

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

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

без жесткого -кодирование любых имен таблиц в SQL-запросы?

+0

ManseUK, спасибо за сделанные вами изменения. Я вижу, что они делают мой пост более удобочитаемым, и я буду помнить, что в будущем буду добавлять списки в блоки комментариев! –

+0

http://stackoverflow.com/questions/1143728/how-can-i-find-which-tables-reference-a-given-table-in-oracle-sql-developer – zod

ответ

0

Быстрый способ перечислить ваши ссылки на внешние ключи, используя вид 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.

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

Счастливое кодирование!

+0

Благодарим за очень быстрый ответ. Я попробую это сейчас. –

Смежные вопросы