Sql 查询行从中继承的父级时获取行的源表的名称
我有一个Postgres数据库,其中有几个表相互继承。我可以从父表中进行选择以从其所有子表中获取结果,但需要获取每个结果来源的表的名称Sql 查询行从中继承的父级时获取行的源表的名称,sql,postgresql,inheritance,Sql,Postgresql,Inheritance,我有一个Postgres数据库,其中有几个表相互继承。我可以从父表中进行选择以从其所有子表中获取结果,但需要获取每个结果来源的表的名称 找到的方法不起作用,因为我只查询了一个表,并且不知道哪些子项将提前出现在结果中。这在PostgreSQL文档中的中得到了回答。可以使用表的hidden tableoid列以及pg_类中的relname将包含表名的列添加到结果中,如图所示: SELECT t.*, p.relname FROM table t, pg_class p WHERE t.tableoi
找到的方法不起作用,因为我只查询了一个表,并且不知道哪些子项将提前出现在结果中。这在PostgreSQL文档中的中得到了回答。可以使用表的hidden tableoid列以及pg_类中的relname将包含表名的列添加到结果中,如图所示:
SELECT t.*, p.relname FROM table t, pg_class p WHERE t.tableoid = p.oid;
要标识特定行的源表,请使用,就像您已经发现的一样。 用于检索实际名称的转换,根据当前搜索路径在需要时自动对架构进行限定 更多:
现在对模式不太感兴趣,但是角色转换是个好主意。将查询缩短一点。
SELECT *, tableoid::regclass::text AS table_name
FROM master.tbl
WHERE <some_condition>;