2012-01-06 1 views
0

Учитывая разные источники данных, я хотел бы узнать все внешние ключи внутри базы данных. БД может быть чем угодно: от SQLite до SQL Server и Oracle. Есть ли общий способ сделать это? Может быть, ОРМ может быть полезен?Найти все внешние ключи внутри реляционной БД - нет RDBMS

Есть несколько прекрасных сценариев на SO, как это one. Но это специфический SQL Server, и я хочу исследовать общий характер проблемы.

+1

Каждый RDBS имеет свой собственный словарь данных , так что нет, нет общего решения. –

+0

Большинство реализаций РСУБД должны поддерживать представления схемы информации, которые используются в ответе на вопрос/ответ. –

+1

INFORMATION_SCHEMA может быть возможностью. –

ответ

3

Единственная надежда, что вы должны быть агрегированной RDBMS, - использовать представления INFORMATION_SCHEMA, которые должны поддерживаться любой разумно совместимой с ANSI-SQL системой баз данных.

См. this SO question о том, как найти ограничения ссылочной целостности, используя INFORMAITON_SCHEMA. Запросы, как, что должны работы по Oracle, MySQL и PostgreSQL и т.д. - но, скорее всего, не в SQLite (не ANSI достаточно совместимым, насколько я помню)

+1

Oracle не поддерживает 'INFORMATION_SCHEMA' –

+2

@a_horse_with_no_name: ** boo **, Oracle! Это, к сожалению, просто показывает, насколько мало ценны эти стандарты ANSI SQL в реальной жизни ... :-( –