2014-10-28 5 views
2

Есть ли способ ссылаться на таблицу по идентификатору. По существу, таблица содержит строки, относящиеся к одной из многих таблиц.См. Таблицу по id

например. Мне нужно указать таблицы A или B или C в таблице D, чтобы я знал, к какой таблице присоединиться.

Я предполагаю, что если нет стенографического справочника таблицы снаружи, то единственным вариантом является сохранение имени таблицы.

+0

Какой запрос вы имеете в виду? Предоставьте полный тестовый пример для точных консультаций. –

ответ

2

Существует таблица «коротких ссылок» для таблицы: object identifier - OID таблицы каталога pg_class. Простой способ получить его:

SELECT 'schema_name.tbl_name'::regclass 

Однако сделать не сохраняются это в ваших пользовательских таблицах. OID системных таблиц нестабильны в цикле дампа/восстановления.

Кроме того, простые инструкции SQL не позволяют параметризовать имена таблиц. Таким образом, вам придется прыгать через обручи, чтобы использовать вашу идею в запросах. Либо dynamic SQL, либо несколько LEFT JOINs с CASE заявлениями ... потенциально дорогостоящими.

Смежные вопросы