1. 程式人生 > >PostgreSQL表繼承

PostgreSQL表繼承

    PostgreSQL支援表繼承,這是它特有的功能。

1.建表

    例:建立person表作為父表,student表是繼承它的子表。

 CREATE TABLE person (
  id  int, 
  name varchar(20)
);

 CREATE TABLE student (
  classId  int
)INHERITS(person);

     執行結果:

    person表

  

    student表

 

    我們可以看到,student表繼承了person表的列id和name,還擁有自己的列classid。

2.查詢資料

   先說結論:查詢父表時,會將子表中的資料也顯示出來;查詢子表時,不會顯示父表中的資料。

   首先,分別向父表person和子表student中插入資料。

insert into person values(0,'Dava');

insert into student values(1,'April',100);
insert into student values(2,'Harris',101);

    然後,查詢兩張表,觀察它們的特點。

select * from person;

    執行結果:

  

select * from student;

    執行結果:

  

    上述結果證明了:查詢父表時,會將子表中的資料也顯示出來;查詢子表時,不會顯示父表中的資料。

    注:1.父表的檢查約束和非空約束會被字表繼承。其他約束(如唯一約束,主鍵,外來鍵)則不會被繼承。

           2.一個子表可以從多個父表繼承,當同名欄位出現在多個父表中,或者父表和子表中,這些欄位會被融合(此時欄位型別必須相同,否則會丟擲一個錯誤)。