如果我有一个base
表和2个或更多继承它的表,child1
和child2
,我可以将一个记录插入到子表中,它将如您所期望的那样显示在base
中。然而,我想知道的是,有可能在child1
和child2
中都有记录吗?
例如,base
是vehicle
,child1
是boat
,child2
是car
,我想插入一辆两栖车(实际上是一艘船和一辆汽车)。
我知道我可以用正常的方式,通过建立关系来做到这一点,但从理论上讲,如果可以像描述的那样做的话,这是很好的。
发布于 2017-01-03 14:14:39
我绝对不会这么做的.如果你真的是受虐狂,你也有多重继承。来自继承文档
一个表可以从多个父表继承,在这种情况下,它具有父表定义的列的合并。在子表定义中声明的任何列都会添加到这些列中。如果同一列名出现在多个父表中,或者出现在父表和子表的定义中,则这些列被“合并”,因此子表中只有一个这样的列。若要合并,列必须具有相同的数据类型,否则会引发错误。合并后的列将拥有来自它所来自的任何列定义的所有check约束的副本,如果其中任何一个列定义为null,则标记为null。
示例
CREATE TABLE vehicle ( name text );
CREATE TABLE boat () INHERITS (vehicle);
CREATE TABLE car () INHERITS (vehicle);
--ewww,
CREATE TABLE boatcar () INHERITS (boat,car);
NOTICE: merging multiple inherited definitions of column "name"
INSERT INTO boatcar (name) VALUES ('amphibious car');
TABLE boatcar ;
name
----------------
amphibious car
(1 row)
TABLE boat;
name
----------------
amphibious car
(1 row)
TABLE car;
name
----------------
amphibious car
(1 row)
TABLE vehicle ;
name
----------------
amphibious car
(1 row)
https://dba.stackexchange.com/questions/150996
复制