PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

5.11. 继承 #

5.11.1. 表继承注意事项

PostgreSQL 实现了数据表层级的继承特性。对于熟悉面向对象编程的开发者来说,这是极其直观的概念。通过继承,子表自动获得父表的所有字段列定义,并在逻辑上支持父子关系的多态查询。

声明继承关系使用 INHERITS 子句:

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

在默认情况下,针对父表 cities 发起的查询会透明级联递归扫描其所有子表(包括 capitals)。如果查询只想严格扫描父表本身的记录,可在表名前附加 ONLY 关键字:

SELECT * FROM ONLY cities;

5.11.1. 表继承注意事项 #

并非所有 SQL 命令都支持自动继承,部分唯一约束与外键约束无法跨继承树生效。