이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

8 장. 계승

두 사설 토토을 만들어 봅시다. 수도 사설 토토에는 상태가 포함되어 있습니다 도시 인 수도. 당연히 수도 사설 토토 도시에서 물려 받아야합니다.

사설 토토 도시 생성 (
    이름 텍스트,
    모집단 플로트,
    고도 int- (FT)
);

사설 토토 캐피탈 생성 (
    상태 문자 (2)
) 상속 (도시);
이 경우 캐피탈 행상속모든 속성 (이름, 인구 및 고도) 부모, 도시로부터. 속성 이름의 유형입니다 이다텍스트, 네이티브Postgres가변 길이 ASCII 스트링을 입력하십시오. 유형 속성 인구의float, a 토종의Postgres이중으로 입력하십시오 정밀 부동 소수점 번호. 주 대문자에는 추가가 있습니다 그들의 상태를 보여주는 속성, 상태. 안에Postgres, 테이블은 0에서 상속 될 수 있습니다 더 많은 다른 테이블과 쿼리는 모든 행의 모든 행을 참조 할 수 있습니다. 테이블 또는 테이블의 모든 행과 모든 후손들.

참고 :상속 계층은 실제로 a입니다 지시 된 acyclic 그래프.

예를 들어 다음 쿼리는 모든 이름을 찾습니다. 고도에 위치한 주 수도를 포함한 도시 500 피트 이상 :

이름, 고도를 선택하십시오
    도시에서
    고도 500;
반환 :
+----------+----------+
| 이름 | 고도 |
+----------+----------+
| 라스 베이거스 | 2174 |
+----------+----------+
| 마리포사 | 1953 |
+----------+----------+
| 매디슨 | 845 |
+----------+----------+

반면에 다음 쿼리는 모든 도시를 찾습니다. 주 수도가 아니며 고도에 위치합니다. 500 피트 이상 :

이름, 고도를 선택하십시오
    도시에서만
    여기서 고도 500;

+----------+----------+
| 이름 | 고도 |
+----------+----------+
| 라스 베이거스 | 2174 |
+----------+----------+
| 마리포사 | 1953 |
+----------+----------+

여기"만"도시 전 쿼리는 도시에서만 실행되어야하며 상속 계층 구조의 도시 아래 표. 많은 우리가 이미 논의한 명령 -select, 업데이트and삭제- 사설 토토is 지원"만"표기법.

경우에 따라 특정 사설 토토을 알고 싶을 수도 있습니다. 튜플은 시작되었습니다. 라는 시스템 열이 있습니다."Tableoid"각 사설 토토에서 원래 사설 토토을 알려주세요 :

C.Tableoid, C.Name, C.Altitude를 선택하십시오
    도시에서 c
    여기서 c.altitude 500;
반환 :
+---------+----------+----------+
| 사설 토토 이드 | 이름 | 고도 |
+---------+----------+-----------+
| 37292 | 라스 베이거스 | 2174 |
+---------+----------+-----------+
| 37280 | Mariposa | 1953 |
+---------+----------+-----------+
| 37280 | 매디슨 | 845 |
+---------+----------+----------+
PG_CLASS에 가입하면 실제 사설 토토을 볼 수 있습니다. 이름:
P.RelName, C.Name, C.Altitude를 선택하십시오
    도시 C, pg_class p
    여기서 c.altitude 500 및 c.tableoid = p.oid;
반환 :
+--------+----------+----------+
| Relname | 이름 | 고도 |
+---------+----------+-----------+
| 수도 | 라스 베이거스 | 2174 |
+---------+----------+-----------+
| 도시 | 마리포사 | 1953 |
+---------+----------+-----------+
| 도시 | Mandison | 845 |
+---------+----------+----------+

감가 상각 :이전 버전의Postgres, 기본값은 얻지 못했습니다 자식 사설 토토에 대한 액세스. 이것은 오류가 발생하기 쉬운 것으로 밝혀졌습니다 SQL99를 위반하고 있습니다. 오래된 구문 아래에서 얻을 수 있습니다 당신이 "*"를 사설 토토 이름에 추가하는 서브 사설 토토. 을 위한 예

선택 *에서 도시에서 *;
여전히 하위 사설 토토 스캔을 명시 적으로 지정할 수 있습니다 "*", 자녀를 스캔하지 않음을 명시 적으로 지정합니다. 글로 사설 토토"만". 하지만 시작 버전 7.1에서, 노동되지 않은 테이블 이름의 기본 동작 기본값이 없기 전에는 자식 테이블도 스캔하는 것입니다. 그렇게하려면. 이전 기본 동작을 얻으려면 구성을 설정하십시오 옵션SQL_INHERITANCE꺼짐, 예 :
sql_inheritance를 OFF로 설정하십시오;
또는 당신의 줄을 추가하십시오postgresql.conf파일.