Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

INFORMATION_SCHEMA - Foreign Key [D7, MSSQL, Postgres]


Ega23 ©   (2008-06-07 10:27:00) 

Что-то никак не могу в описании найти...
Вопрос такой: можно ли из INFORMATION_SCHEMA вытащить информацию, на кого ссылается FK?
Т.е. есть имя FK, через IS вытаскиваю, к каой таблице и какими столбцами привязан.
А как узнать, на какую ссылается?


sniknik   (2008-06-07 17:19:00) [1]

> А если завтра не АДО или в АДО нет
везде свои недостатки. с "другой стороны" тоже возможны неожиданности. вот прямо тут и пример ([10]), а провайдер должен это сам учесть (и учитывает... обычно. с провайдерами FB у меня были проблемы именно по схемам из 5-7(?) протестированных только один адекватный оказался. счас может больше подойдет правят же)


Ega23   (2008-06-07 16:01:00) [2]


> Anatoly Podgoretsky ©   (07.06.08 15:54) [9]


На самом деле проблема с IS есть - Oracle её не поддерживает. Но это не страшно, я заложился на некие "макроподстановки" в зависимости от типа СУБД.


Anatoly Podgoretsky   (2008-06-07 15:54:00) [3]

> sniknik  (07.06.2008 14:35:07)  [7]

А если завтра не АДО или в АДО нет


sniknik   (2008-06-07 14:35:00) [4]

> ... и даже про функции обертки, например из АДО ...
???
OpenSchema в ADO их и использует... и ADO даже с большей вероятностью будет универсальнее (провайдер обязан подогнать методы под измененную базу, даже если изменится сам стандарт т.е. INFORMATION_SCHEMA. т.е. либо один в один тоже самое, либо не париться самому если вдруг изменилось "неменяемое". -> нужно будет просто сменить провайдера при подключении.)


Ega23   (2008-06-07 14:35:00) [5]


> но лучше найти стандарт или описание.


Ну скажем так: я тупо открыл BOL для 2000 и читаю про все эти вьюхи. Какие-то интуитивно понятны, какие-то приходится искать.
Потом, фактически, сравниваю с тем, что в документации к Postgres написано.
Потом проверяю результат на обеих СУБД.

Просто с привязкой к childTable у FK затык небольшой вышел. Но уже всё ясно.


Anatoly Podgoretsky   (2008-06-07 14:24:00) [6]

> Ega23  (07.06.2008 12:08:05)  [5]

Правильной дорогой идешь и не слушай других ни про какие системные таблицы и даже про функции обертки, например из АДО
INFORMATION_SCHEMA - это решение на уровне стандарта. Только тебе надо ознакомиться насчет набора таблиц в ней и их полей. Можно методом научного втыка, но лучше найти стандарт или описание.


Ega23   (2008-06-07 12:08:00) [7]


> причем тут постгрес, оно не к нему относится.


Я пишу проверку существования объектов в БД. СУБД может быть как Postgres, так и MSSQL. Можно, конечно, писать для каждой СУБД свою проверку по системным таблицам, но в этом случае я становлюсь заложником версии сервера в рамках данной СУБД (где гарантия, что в очередном релизе Postgres не изменятся системные таблицы?).
В этом плане INFORMATION_SCHEMA даёт действительно более-менее универсальное решение.


sniknik   (2008-06-07 12:01:00) [8]

> [D7, MSSQL, Postgres]
причем тут постгрес, оно не к нему относится.


Ega23   (2008-06-07 11:49:00) [9]


> sysforeignkeys?


Где ты в Information_Schema или в системных таблицах Postgres видишь sysforeignkeys?


версия для печати   (2008-06-07 11:48:00) [10]

sysforeignkeys?


Ega23   (2008-06-07 10:31:00) [11]

Отставить, нашёл. Не совсем то, что хотел, но дальше можно раскрутить:

INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_NAME


Наверх

Титульная страница Поиск, карта сайта Написать письмо