Re: Finding out to which table a specific row belongs

Поиск
Список
Период
Сортировка
От Michael Fuhr
Тема Re: Finding out to which table a specific row belongs
Дата
Msg-id 20051214175306.GA82006@winnie.fuhr.org
обсуждение исходный текст
Ответ на Finding out to which table a specific row belongs  (Jost Degenhardt <jostdegenhardt@web.de>)
Список pgsql-sql
On Wed, Dec 14, 2005 at 06:26:23PM +0100, Jost Degenhardt wrote:
> I have the following problem: My database consists of several tables 
> that are inherited from each other with one single supertable on top of 
> that hierarchy. Now I would like to select a single row in that 
> supertable and want to find out to which of the tables in the hierarchy 
> it belongs.

http://www.postgresql.org/docs/8.1/interactive/ddl-inherit.html
 In some cases you may wish to know which table a particular row originated from.  There is a system column called
tableoidin each table which can tell you the originating table:
 

http://www.postgresql.org/docs/8.1/interactive/ddl-system-columns.html
 tableoid
   The OID of the table containing this row. This column is particularly   handy for queries that select from
inheritancehierarchies (see   Section 5.8), since without it, it's difficult to tell which   individual table a row
camefrom. The tableoid can be joined   against the oid column of pg_class to obtain the table name.
 

Here's an example; instead of getting the table name via a join
with pg_class it uses a cast to regclass:

CREATE TABLE parent (t text);
CREATE TABLE child1 () INHERITS (parent);
CREATE TABLE child2 () INHERITS (parent);

INSERT INTO child1 VALUES ('one');
INSERT INTO child2 VALUES ('two');

SELECT tableoid::regclass, * FROM parent;tableoid |  t  
----------+-----child1   | onechild2   | two
(2 rows)

-- 
Michael Fuhr


В списке pgsql-sql по дате отправления:

Предыдущее
От: Jost Degenhardt
Дата:
Сообщение: Finding out to which table a specific row belongs
Следующее
От: "Ken Winter"
Дата:
Сообщение: Defaulting a column to 'now'