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

Axe*_*ine 10 sql database postgresql inheritance

在PostgreSQL中为这些表

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

CREATE TABLE cities_capitals (
    state           char(2)
) INHERITS (cities);
Run Code Online (Sandbox Code Playgroud)

如何以编程方式检查其中一个是否继承自另一个表?(想想information_schema,pg_catalog,......)

应该是truecities_capitals和false城市.

Erw*_*ter 14

有一个目录表:pg_inherits.

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

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

SELECT EXISTS (
   SELECT 1
   FROM   pg_catalog.pg_inherits
   WHERE  inhrelid = 'public.cities_capitals'::regclass
   );
Run Code Online (Sandbox Code Playgroud)

TRUE如果表cities_capitals继承自某个地方,否则FALSE.
Schema-确定名称以确定.