-
Что-то никак не могу в описании найти...
Вопрос такой: можно ли из INFORMATION_SCHEMA вытащить информацию, на кого ссылается FK?
Т.е. есть имя FK, через IS вытаскиваю, к каой таблице и какими столбцами привязан.
А как узнать, на какую ссылается?
-
Отставить, нашёл. Не совсем то, что хотел, но дальше можно раскрутить:
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_NAME
-
sysforeignkeys?
-
> sysforeignkeys?
Где ты в Information_Schema или в системных таблицах Postgres видишь sysforeignkeys?
-
> [D7, MSSQL, Postgres]
причем тут постгрес, оно не к нему относится.
-
> причем тут постгрес, оно не к нему относится.
Я пишу проверку существования объектов в БД. СУБД может быть как Postgres, так и MSSQL. Можно, конечно, писать для каждой СУБД свою проверку по системным таблицам, но в этом случае я становлюсь заложником версии сервера в рамках данной СУБД (где гарантия, что в очередном релизе Postgres не изменятся системные таблицы?).
В этом плане INFORMATION_SCHEMA даёт действительно более-менее универсальное решение.
-
> Ega23 (07.06.2008 12:08:05) [5]
Правильной дорогой идешь и не слушай других ни про какие системные таблицы и даже про функции обертки, например из АДО
INFORMATION_SCHEMA - это решение на уровне стандарта. Только тебе надо ознакомиться насчет набора таблиц в ней и их полей. Можно методом научного втыка, но лучше найти стандарт или описание.
-
> ... и даже про функции обертки, например из АДО ...
???
OpenSchema в ADO их и использует... и ADO даже с большей вероятностью будет универсальнее (провайдер обязан подогнать методы под измененную базу, даже если изменится сам стандарт т.е. INFORMATION_SCHEMA. т.е. либо один в один тоже самое, либо не париться самому если вдруг изменилось "неменяемое". -> нужно будет просто сменить провайдера при подключении.)
-
> но лучше найти стандарт или описание.
Ну скажем так: я тупо открыл BOL для 2000 и читаю про все эти вьюхи. Какие-то интуитивно понятны, какие-то приходится искать.
Потом, фактически, сравниваю с тем, что в документации к Postgres написано.
Потом проверяю результат на обеих СУБД.
Просто с привязкой к childTable у FK затык небольшой вышел. Но уже всё ясно.
-
> sniknik (07.06.2008 14:35:07) [7]
А если завтра не АДО или в АДО нет
-
> Anatoly Podgoretsky © (07.06.08 15:54) [9]
На самом деле проблема с IS есть - Oracle её не поддерживает. Но это не страшно, я заложился на некие "макроподстановки" в зависимости от типа СУБД.
-
> А если завтра не АДО или в АДО нет
везде свои недостатки. с "другой стороны" тоже возможны неожиданности. вот прямо тут и пример ([10]), а провайдер должен это сам учесть (и учитывает... обычно. с провайдерами FB у меня были проблемы именно по схемам из 5-7(?) протестированных только один адекватный оказался. счас может больше подойдет правят же)