在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
,城市应为false
。
4条答案
按热度按时间igetnqfo1#
这里有一个目录表:
pg_inherits
.目录
pg_inherits
记录了表继承层次结构的信息。数据库中的每个直接子表都有一个条目。(间接继承可以通过下面的条目链来确定。)下面是一个符合您的问题的查询:
TRUE
如果表cities_capitals
从某处继承,则为FALSE
。对名称进行模式限定以确保安全。
wmtdaxz32#
以下语句将检索
cities
从其继承的表。如果该表不是从另一个表继承的,则结果为空:a0x5cqrl3#
从 Postgresql AutoDoc 中,我找到了以下SQL:
这非常有用,因为您可以使用一个查询在两个方向上进行测试。
odopli944#
另一种方法是使用
INHERITS
如果
cities_capitals
继承自cities
,则返回t
,否则返回f