Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Вниз

INFORMATION_SCHEMA - Foreign Key   Найти похожие ветки 

 
Ega23 ©   (2008-06-07 10:27) [0]

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


 
Ega23 ©   (2008-06-07 10:31) [1]

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

INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS.UNIQUE_CONSTRAINT_NAME


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

sysforeignkeys?


 
Ega23 ©   (2008-06-07 11:49) [3]


> sysforeignkeys?


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


 
sniknik ©   (2008-06-07 12:01) [4]

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


 
Ega23 ©   (2008-06-07 12:08) [5]


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


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


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

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

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


 
sniknik ©   (2008-06-07 14:35) [7]

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


 
Ega23 ©   (2008-06-07 14:35) [8]


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


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

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


 
Anatoly Podgoretsky ©   (2008-06-07 15:54) [9]

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

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


 
Ega23 ©   (2008-06-07 16:01) [10]


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


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


 
sniknik ©   (2008-06-07 17:19) [11]

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
15-1227583427
Slider007
2008-11-25 06:23
2009.01.18
С днем рождения ! 25 ноября 2008 вторник


2-1228291866
b@v
2008-12-03 11:11
2009.01.18
MySQL & Delphi


1-1205931856
IntruderLab
2008-03-19 16:04
2009.01.18
Вопрос по чеклисту


2-1228729360
Khim
2008-12-08 12:42
2009.01.18
Автозапуск


2-1228248817
Тень
2008-12-02 23:13
2009.01.18
Метод сеток





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский