小编典典

检查表是否从PostgreSQL中的其他表继承

sql

在PostgreSQL中用于这些表

CREATE TABLE cities (
    name            text,
    population      float,
    altitude        int     -- in feet
);

CREATE TABLE cities_capitals (
    state           char(2)
) INHERITS (cities);

如何以 编程方式检查 这些 表中的 一个是否 继承自另一个表
?(请考虑information_schema,pg_catalog等)

应该true适用于city_capitals和false城市。


阅读 35

收藏
2021-04-07

共1个答案

小编典典

有一个用于该目录的表:
pg_inherits

该目录pg_inherits记录有关表继承层次结构的信息。数据库中的每个直接子表都有一个条目。(可以通过以下条目链来确定间接继承。)

这是一个适合您问题的查询:

SELECT EXISTS (
   SELECT 1
   FROM   pg_catalog.pg_inherits
   WHERE  inhrelid = 'public.cities_capitals'::regclass
   );

TRUE如果tablecities_capitals从某个地方继承,则else FALSE
请对名称进行模式限定。

2021-04-07