Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Получение списка внешних ключей по таблице / 12 сообщений из 12, страница 1 из 1
12.11.2014, 18:29:51
    #38803987
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
Всем привет!

Есть таблица table_name. Мне нужно получить список внешних ключей по этой таблице.
Сразу скажу, что обращение к БД information_schema мне не подходит по определенным причинам.

В инете нашел такое:
"Список ограничений внешнего ключа таблицы T можно также вывести при помощи команды:
Код: sql
1.
SHOW TABLE STATUS FROM yourdatabasename LIKE 'T'


Ограничения внешнего ключа выводятся в комментариях к таблице"

Выполнил такой запрос. Не пойму, где там внешние ключи? В поле comment пусто.
Остальная информация вообще к внешним ключам никакого отношения не имеет!
Внешние ключи по рассматриваемой таблице 100% есть.

Всем заранее спасибо!
...
Рейтинг: 0 / 0
12.11.2014, 18:46:47
    #38804002
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
А show create table констрейнты не показывает? что-то не помню. Индексы точно показывает...
...
Рейтинг: 0 / 0
12.11.2014, 18:47:36
    #38804004
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
Показывает. Но я create table собираю "ручками".
И мне нужно "самостоятельно" вытащить внешние ключи ...
...
Рейтинг: 0 / 0
12.11.2014, 18:51:39
    #38804010
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
urukhay,

ЯННП :) Если вы сами собираете create, то таблицы на момент собирания ещё нет. Так какие могут быть на ней внешние ключи?
...
Рейтинг: 0 / 0
12.11.2014, 19:09:15
    #38804025
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
urukhayобращение к БД information_schematanglirshow create tableИмхо, больше малокровных путей нет.
...
Рейтинг: 0 / 0
13.11.2014, 13:39:12
    #38804806
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
авторЯННП
Шо це? )))

авторЕсли вы сами собираете create, то таблицы на момент собирания ещё нет. Так какие могут быть на ней внешние ключи?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$result = '';
$indexes = '';
$constraints = '';
$d = mysql_query('show full tables from [db_name]');
$r = mysql_num_rows($d);
for($i=1; $i<=$r; $i++)
{
    $rec = mysql_fetch_assoc($d);
    // Получаем индексы по таблице
    // Получаем ключи по таблице
}
$result .= 'CREATE TABLE '.$rec;
$result .= $indexes;
$result .= $constraints;
// Ну и т.д.



авторИмхо, больше малокровных путей нет.
Обращение к information_schema нефига не малокровный ))
Я создавал недавно топик, когда написал функцию дампа чисто через таблицы information_schema.
И на больших базах скрипт не успевал выполняться, падал. Мне посоветовали использовать SHOW-запросы.
Переписал. Стало лучше. Думал любые DDL можно получить с помощью SHOW ...
...
Рейтинг: 0 / 0
13.11.2014, 13:42:14
    #38804809
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
urukhayОбращение к information_schema нефига не малокровный ))Все относительно. По сравнению с разбором исходников MySQL и чтением его сырых файлов - сущий пустяк :)
...
Рейтинг: 0 / 0
13.11.2014, 13:43:52
    #38804812
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
urukhayЯ создавал недавно топик, когда написал функцию дампа чисто через таблицы information_schema.
И на больших базах скрипт не успевал выполняться, падал.Возможно, есть смысл попробовать создавать копию этих таблиц с необходимыми индексами перед основной работой.
...
Рейтинг: 0 / 0
13.11.2014, 13:47:10
    #38804821
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
авторВсе относительно. По сравнению с разбором исходников MySQL и чтением его сырых файлов - сущий пустяк :)
Ну если так, то, действительно, пустяк ))

авторВозможно, есть смысл попробовать создавать копию этих таблиц с необходимыми индексами перед основной работой.
А вот тут что-то не совсем понял идею. Можно чуть поподробнее?
...
Рейтинг: 0 / 0
13.11.2014, 13:49:33
    #38804828
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
urukhayавторВозможно, есть смысл попробовать создавать копию этих таблиц с необходимыми индексами перед основной работой.
А вот тут что-то не совсем понял идею. Можно чуть поподробнее?Нужные таблицы из information_schema скопировать в обычные таблицы. Создать необходимые индексы. Потом использовать эти таблицы вместо information_schema.
...
Рейтинг: 0 / 0
13.11.2014, 14:08:22
    #38804872
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
Ааа. Интересная идея!
Но тут тоже есть подводный камень: при изменение структуры таблицы придется вручную вносить эти изменения в скопированные таблицы. Но буду пробовать и сравнивать производительность. Спасибо!
...
Рейтинг: 0 / 0
13.11.2014, 16:13:29
    #38805124
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка внешних ключей по таблице
urukhayпри изменение структуры таблицы придется вручную вносить эти изменения в скопированные таблицыЗачем вручную? Вставьте этот фрагмент непосредственно перед основной работой и пусть все вместе выполняется каждый раз, когда это надо.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Получение списка внешних ключей по таблице / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]