이 문서는 지원되지 않는 버전의 스포츠 토토 결과을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다토토 PostgreSQL : 문서 : 17 : 5.11. 계승버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

5.8. 계승

스포츠 토토 결과스포츠 토토 결과을 구현합니다 데이터베이스 디자이너에게 유용한 도구가 될 수있는 상속. (SQL : 1999 및 나중에 유형 상속 기능을 정의합니다 여기에 설명 된 기능과 여러 측면에서 다릅니다.)

예로부터 시작합시다. 도시의 데이터 모델. 각 주에는 많은 도시가 있지만 하나만 있습니다 수도. 우리는 수도를 빠르게 검색 할 수 있기를 원합니다. 특정 상태. 이것은 두 가지를 만들어 수행 할 수 있습니다 스포츠 토토 결과, 하나는 주 수도 용 및 하나는 그렇지 않은 도시를위한 수도. 그러나 데이터를 요청하고 싶을 때 어떻게되는지 도시에 대해, 그것이 수도인지 여부에 관계없이? 그만큼 상속 기능은이 문제를 해결하는 데 도움이 될 수 있습니다. 우리는 정의합니다 그만큼캐피탈스포츠 토토 결과이되도록하십시오 에서 상속도시:

스포츠 토토 결과 도시 생성 (
    이름 텍스트,
    모집단 플로트,
    고도 int- 발
);

스포츠 토토 결과 캐피탈 생성 (
    상태 문자 (2)
) 상속 (도시);

이 경우캐피탈스포츠 토토 결과상속부모의 모든 열 스포츠 토토 결과,도시. 주 수도 추가 열이 있습니다.State그들의 상태를 보여줍니다.

in스포츠 토토 결과, 스포츠 토토 결과이 가능합니다 0 이상의 다른 스포츠 토토 결과에서 상속되고 쿼리가 참조 할 수 있습니다. 스포츠 토토 결과의 모든 행 또는 스포츠 토토 결과의 모든 행과 그 모든 행 후손 스포츠 토토 결과. 후자의 동작은 기본값입니다. 을 위한 예를 들어 다음 쿼리는 모든 도시의 이름을 찾습니다. 고도에 위치한 주 수도를 포함하여 500 피트 :

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

스포츠 토토 결과튜토리얼 (참조섹션 2.1), 이것은 다음과 같습니다.

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

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

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

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

여기전용키워드를 나타냅니다 쿼리는에만 적용되어야합니다.도시, 아래 스포츠 토토 결과이 아님도시상속 계층에서. 많은 것들 우리가 이미 논의한 명령 -select, 업데이트and삭제- 지원전용키워드.

후행으로 스포츠 토토 결과 이름을 쓸 수도 있습니다*자손 스포츠 토토 결과을 명시 적으로 지정합니다 포함 :

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

쓰기*그 이후로 필요하지 않습니다 이 동작은 기본값입니다 (설정을 변경하지 않는 한 의SQL_INHERITANCE구성 옵션). 그러나 쓰기*추가 스포츠 토토 결과이 검색.

경우에 따라 특정 스포츠 토토 결과을 알고 싶을 수도 있습니다. 행이 시작되었습니다. 라는 시스템 열이 있습니다.Tableoid각 스포츠 토토 결과에서 원래 스포츠 토토 결과 :

C.Tableoid, C.Name, C.Altitude를 선택하십시오
도시에서 c
여기서 c.altitude 500;

반환 :

Tableoid |   이름 | 고도
----------+----------+----------
   139793 | 라스 베이거스 |     2174
   139793 | 마리포사 |     1953
   139798 | 매디슨 |      845

(이 예제를 재현하려고하면 아마 다른 숫자 Oids.)와 함께PG_CLASS실제 스포츠 토토 결과을 볼 수 있습니다 이름 :

P.RelName, C.Name, C.Altitude를 선택하십시오
도시 C, pg_class p
여기서 c.altitude 500 및 c.tableoid = p.oid;

반환 :

Relname |   이름 | 고도
----------+----------+----------
 도시 | 라스 베이거스 |     2174
 도시 | 마리포사 |     1953
 수도 | 매디슨 |      845

상속은 자동으로 데이터를 자동으로 전파하지 않습니다삽입또는COPY상속 계층의 다른 스포츠 토토 결과에 대한 명령. 우리에서 예, 다음삽입진술 실패 할 것입니다 :

도시에 삽입 (이름, 인구, 고도, 주)
값 ( 'New York', Null, Null, 'Ny');

우리는 데이터가 어떻게 든 라우팅되기를 바랍니다.캐피탈스포츠 토토 결과이지만 그렇지 않습니다 일어나다:삽입항상 삽입하십시오 정확히 지정된 스포츠 토토 결과. 어떤 경우에는 가능합니다 규칙을 사용하여 삽입을 리디렉션합니다 (참조제 37 장). 그러나 그것은 도움이되지 않습니다 위의 경우도시스포츠 토토 결과 열이 포함되어 있지 않습니다State, 그리고 규칙이 될 수 있기 전에 명령이 거부됩니다. 적용된.

부모에 대한 모든 검사 제약 조건 및 널없는 제약 조건 스포츠 토토 결과은 아이들이 자동으로 상속됩니다. 다른 유형의 제약 조건 (고유 한 기본 키 및 외국 키 제약 조건) 상속되지 않았습니다.

스포츠 토토 결과은 하나 이상의 상위 스포츠 토토 결과에서 상속 될 수 있습니다. 사례는 부모가 정의한 열의 통합을 가지고 있습니다. 스포츠 토토 결과. Child Table의 정의에서 선언 된 모든 열은 다음과 같습니다 이것들에 추가되었습니다. 동일한 열 이름이 다중에 나타나는 경우 부모 스포츠 토토 결과 또는 부모 스포츠 토토 결과과 자녀의 정의,이 열은입니다."합병"따라서 그러한 열만 하나만 있습니다 어린이 스포츠 토토 결과. 병합하려면 열에 동일한 데이터가 있어야합니다 유형, 그렇지 않으면 오류가 발생합니다. 병합 된 열에는 모든 수표 제약 조건의 사본은 열 정의는 그 결과로 나왔고, 그럼에도 불구하고 null으로 표시됩니다. 그들 중 누구도.

스포츠 토토 결과 상속은 일반적으로 자식 일 때 설정됩니다 스포츠 토토 결과은를 사용하여 생성됩니다.상속절의 조항PostgreSQL :진술. 또는 이미 정의 된 스포츠 토토 결과 호환 방법은 새로운 부모 관계를 추가 할 수 있습니다. 그만큼상속변형Alter Table. 이를 위해 새로운 아이 스포츠 토토 결과에는 이미 동일한 이름과 유형의 열이 포함되어야합니다. 부모의 열로. 수표도 포함해야합니다 이름과 동일한 제약 및 표현식과 같은 제약 조건 부모. 마찬가지로 상속 링크는 a에서 제거 될 수 있습니다 자녀를 사용하는 자녀상속 없음변형Alter Table. 동적으로 추가하고 이와 같은 상속 링크를 제거하면 상속 관계는 스포츠 토토 결과 파티셔닝에 사용되고 있습니다 (보다PostgreSQL : 문서 : 9.0 : 토토 사이트 추천).

호환 가능한 스포츠 토토 결과을 만드는 편리한 방법 중 하나 나중에 새로운 아이는 사용하는 것입니다.Like조항생성 스포츠 토토 결과. 이것은 다음과 같은 열의 새 스포츠 토토 결과을 만듭니다. 소스 스포츠 토토 결과. 있는 경우check소스 스포츠 토토 결과에 정의 된 제약 조건,제약 포함옵션좋아요새 자녀가 꼭 필요한 것처럼 지정해야합니다 고려할 부모와 일치하는 제약 조건이 있습니다 호환.

어린이 중 누구라도 부모 스포츠 토토 결과을 떨어 뜨릴 수 없습니다. 유지하다. 어린이 스포츠 토토 결과의 칼럼이나 제약 조건을 확인할 수 없습니다 부모로부터 상속 받으면 떨어 뜨리거나 변경됩니다. 스포츠 토토 결과. 스포츠 토토 결과과 모든 후손을 제거하려면 쉬운 방법 중 하나는로 부모 스포츠 토토 결과을 떨어 뜨리는 것입니다.캐스케이드옵션.

PostgreSQL :전파됩니다 열 데이터 정의의 변경 및 제약 조건을 확인합니다. 상속 계층. 다시 한 번, 열을 떨어 뜨립니다 다른 스포츠 토토 결과에 의존하는 것은를 사용할 때만 가능합니다.캐스케이드옵션.Alter Table동일한 규칙을 따릅니다 중간에 적용되는 열 병합 및 거부스포츠 토토 결과 생성.

스포츠 토토 결과 액세스 권한을 처리하는 방법에 유의하십시오. 쿼리 a 부모 스포츠 토토 결과은 하위 스포츠 토토 결과의 데이터에 자동으로 액세스 할 수 있습니다 추가 액세스 권한 확인없이. 이것은 보존합니다 부모 스포츠 토토 결과에 데이터가 (또한)입니다. 접근 그러나 자식 스포츠 토토 결과은 직접 자동으로 허용되지 않습니다 추가 특권이 부여되어야합니다.

5.8.1. 경고

모든 SQL 명령이 작업 할 수있는 것은 아닙니다. 상속 계층. 데이터에 사용되는 명령 쿼리, 데이터 수정 또는 스키마 수정 (예 :select, 업데이트, 삭제, 대부분 변형Alter Table그러나삽입또는변경 스포츠 토토 결과 ... 이름 바꾸기) 일반적으로 어린이 포함에 대한 기본값 스포츠 토토 결과 및 지원전용표기법 그들을 배제하기 위해. 데이터베이스 유지 관리를 수행하는 명령 튜닝 (예 :Reindex, 진공) 일반적으로 개인 만 작동합니다. 물리적 스포츠 토토 결과 및 상속에 대한 재귀를 지원하지 않습니다 계층. 각 개별 명령의 각 행동 참조 페이지 (에 문서화되어 있습니다.참조 I,SQL 명령).

상속 기능의 심각한 제한은 그 것입니다 인덱스 (고유 한 제약 포함) 및 외국 키 제약 조건은 단일 스포츠 토토 결과에만 적용됩니다 상속 어린이. 이것은 참조와 모두에 해당됩니다 외국 키 제약 조건의 참조 측면. 따라서, 위의 예 :

  • 우리가 선언 한 경우도시.이름고유 한또는 A기본 키캐피탈행이있는 스포츠 토토 결과 이름을 복제하는 행으로도시. 그리고 그 중복 행은 기본값은 쿼리에 나타납니다.도시. 사실, 기본적으로캐피탈고유 한 제약 조건이 없습니다 전혀, 동일하게 여러 행을 포함 할 수 있습니다. 이름. 당신은에 독특한 제약을 추가 할 수 있습니다캐피탈이지만 이것은 예방되지 않습니다 에 비해 복제도시.

  • 마찬가지로, 우리가 그것을 명시해야한다면도시.이름 참조다른 스포츠 토토 결과, 이것 제약 조건은 자동으로 전파되지 않습니다캐피탈. 이 경우 작업 할 수 있습니다 수동으로 동일한 것을 추가하여 주변참조제약 조건캐피탈.

  • 다른 스포츠 토토 결과의 열 지정참조 도시 (이름)다른 스포츠 토토 결과은 도시 이름을 포함하지만 자본 이름은 아닙니다. 이 경우에는 좋은 해결 방법이 없습니다.

이러한 결함은 아마도 어떤 미래에 고정 될 것입니다 릴리스이지만 그 동안 상당한 치료가 필요합니다. 상속이 귀하에게 유용한 지 여부를 결정합니다 애플리케이션.