在查询从中继承的父级时,获取行的源表名称

时间:2014-07-04 20:16:02

标签: sql postgresql inheritance

我有一个Postgres数据库,其中包含几个继承的表。我可以从父表中SELECT获取其所有子项的结果,但需要获取每个结果源自的表的名称。

找到的方法here不起作用,因为我只查询一个表,并且不知道哪些孩子会提前出现在结果中。

2 个答案:

答案 0 :(得分:13)

要识别特定行所在的表格,请使用tableoid,就像您已经发现的那样 对regclass的强制转换检索实际名称,如果当前search_path需要,则自动进行模式限定。

SELECT *, tableoid::regclass::text AS table_name
FROM   master.tbl
WHERE  <some_condition>;

更多:

答案 1 :(得分:0)

这在section on inheritance的PostgreSQL文档中得到了解答。可以使用表格中隐藏的tableoid列以及relname中的pg_class来添加包含表名称的列到结果中,如下所示:

SELECT t.*, p.relname FROM table t, pg_class p WHERE t.tableoid = p.oid;