Например: Скажем, у меня есть 2 схемы и 4 таблицы, созданные как
create table a.foo(
id integer primary key,
val integer);
create table b.main(
id serial primary key,
val integer references a.foo(id));
create table b.foo(
k integer primary key references b.main(id),
v timestamp with time zone);
create table b.bar(
k integer primary key references b.main(id),
v timestamp with time zone);
Псевдокод для того, что я ищу: выберите все таблицы, на которые ссылается b.main.id;
Результаты будут выглядеть так:
b.main.id | b.main.val | b.foo.k | b.foo.v | b.bar.k | b.bar.v
1 1 1 TimeStamp 1 TimeStamp
2 1 2 .... 2 ....
Прямо сейчас я реализовал этот запрос как:
select * from b.main,
(select *
from b.foo,
(select * from b.bar where b.bar.v > somedate) as morebar
where b.bar.k = b.foo.k) as morefoo
where b.main.id = b.foo.k;
Вернемся к вопросу. Есть ли в Postgres функция, позволяющая выполнять выборку всех таблиц, ссылающихся на первичный ключ? В моем случае все таблицы, ссылающиеся на b.main.id.
Я просмотрел документацию Postgresql, но еще не нашел то, что ищу. Предложения?