Выберите имя таблицы в Postgresql с наследованием - PullRequest
0 голосов
/ 20 марта 2019

Итак, это моя родительская таблица: TableA

 +-----+-----------+
 + id  +   name    +
 +-----+-----------+

И это таблицы, которые наследуют таблицу A: TableB TableC

+-----+-----------+----------+
+ id  +   date    +   year   +
+-----+-----------+----------+

+-----+-----------+----------+
+ id  +   owner   +   age    +
+-----+-----------+----------+

У меня есть Select, где я получаю идентификатор из имени в TableA, и мне нужно получить имя таблицы, содержащей этот конкретный идентификатор. Я думал о создании вида, но я нуби и не знаю как.

Спасибо.

1 Ответ

0 голосов
/ 20 марта 2019

Для этого можно использовать системный столбец tableoid.

Следующий пример:

create table table_a (id integer, name text);
create table table_b () inherits (table_a);
create table table_c () inherits (table_a);

insert into table_b values (1, 'one');
insert into table_c values (2, 'two');

select tableoid::regclass as table_name, id, name
from table_a;

возвращает:

table_name | id | name
-----------+----+-----
table_b    |  1 | one 
table_c    |  2 | two 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...