Get the name of a row's source table when querying the parent it inherits from
To identify the source table of a particular row, use the tableoid
, like you found yourself already.
A cast to regclass
retrieves the actual name, automatically schema-qualified where needed according to the current search_path
.
SELECT *, tableoid::regclass::text AS table_nameFROM master.tblWHERE <some_condition>;
More:
This is answered in the PostgreSQL documentation, in the section on inheritance. One can use the hidden tableoid
column of the table along with relname
from pg_class
to add a column containing the table names to the result, as shown:
SELECT t.*, p.relname FROM table t, pg_class p WHERE t.tableoid = p.oid;