继承是面向对象数据库中的概念。它展示了数据库设计的新的可能性。
CREATE TABLE XXX(
XX XXX
) INHERITS(xx);
CREATE TABLE A(
name text,
population real,
elevation int
);
CREATE TABLE B(
state char(2) UNIQUE NOT NULL
) INHERITS(A);
B从它的父A继承了所有列(name、population和elevation)。
列name的类型是text,一种用于变长字符串的本地PostgreSQL类型。
在PostgreSQL中,一个表可以从0个或者多个表继承。
INSERT INTO A (name,elevation)
values ('Las Vegas',2174);
INSERT INTO A (name,elevation)
values ('Mariposa',1953);
INSERT INTO B (name,elevation,state)
values ('Madison',845,'cc');
SELECT name,elevation FROM a WHERE elevation >500;
SELECT name,elevation FROM ONLY A WHERE elevation >500;
ONLY用于指示查询只在A表上进行而不会涉及到继承层次中位于A之下的其他表。
很多我们已经讨论过的命令 — SELECT、UPDATE 和DELETE — 都支持这个ONLY记号。