두 개의 토토 핫을 생성합시다. Capitals 토토 핫에는 상태가 포함되어 있습니다. 도시이기도 한 수도. 당연히 대문자 토토 핫은 도시에서 상속받아야 합니다.
토토 핫 도시 생성(
이름 텍스트,
인구 부동,
고도 int -- (피트 단위)
);
CREATE TABLE 대문자(
상태 문자(2)
) 상속(도시);
이 경우 대문자 행상속모든 속성(이름, 인구 및 고도)를 상위 도시로부터 가져옵니다. 속성 이름의 유형 이다텍스트, 원주민포스트그레SQL가변 길이 ASCII용 유형 문자열. 속성 채우기 유형은 다음과 같습니다.플로트, 원주민포스트그레SQL배정밀도용 유형 부동 소수점 숫자. 주 수도에는 추가 속성이 있습니다. 상태는 자신의 상태를 보여줍니다. 에서포스트그레SQL, 토토 핫은 0 또는 더 많은 토토 핫이 있으며 쿼리는 토토 핫의 모든 행을 참조할 수 있습니다. 토토 핫 또는 토토 핫의 모든 행과 모든 하위 항목.
참고:상속 계층은 실제로 방향성 비순환 그래프.
예를 들어, 다음 쿼리는 모든 이름을 찾습니다. 주도를 포함한 고도에 위치한 도시 500피트 이상:
SELECT 이름, 고도
도시에서
고도 500;
반환:
이름 | 고도 ---------+---------- 라스베가스 | 2174 마리포사 | 1953년 매디슨 | 845
반면에 다음 쿼리는 모든 도시를 찾습니다. 주도가 아니고 고도가 높은 곳에 위치한 곳 500피트:
SELECT 이름, 고도
도시에서만
고도 500인 곳;
이름 | 고도
---------+----------
라스베가스 | 2174
마리포사 | 1953
여기"만"도시 전 쿼리가 도시에서만 실행되어야 함을 나타냅니다. 상속 계층의 도시 아래에 있는 테이블입니다. 많은 이미 논의한 명령 --선택, 업데이트그리고삭제-- 이것을 지원하세요"만"표기법.
어떤 경우에는 특정 테이블이 어떤 것인지 알고 싶을 수도 있습니다. 튜플은 다음에서 유래되었습니다. 라는 시스템 열이 있습니다.TABLEOID각 토토 핫에 있는 내용을 통해 원본 토토 핫:
SELECT c.tableoid, c.이름, c.고도 도시에서 c c.altitude 500;
반환:
토토 핫로이드 | 이름 | 고도 --------+------------+---------- 139793 | 라스베가스 | 2174 139793 | 마리포사 | 1953년 139798 | 매디슨 | 845
(이 예를 재현하려고 하면 아마도 다음과 같은 결과를 얻게 될 것입니다. 다른 숫자 OID.) pg_class와 조인을 수행하면 다음을 수행할 수 있습니다. 실제 테이블 이름을 확인하세요.
SELECT p.relname, c.name, c.altitude 도시 c, pg_class p에서 여기서 c.altitude 500 및 c.tableoid = p.oid;
반환:
relname | 이름 | 고도 --------+------------+---------- 도시 | 라스베가스 | 2174 도시 | 마리포사 | 1953년 수도 | 매디슨 | 845
지원 중단됨:이전 버전에서토토 핫, 기본값은 가져오지 않는 것이었습니다. 하위 토토 핫에 대한 액세스. 이는 오류가 발생하기 쉬운 것으로 확인되었으며 또한 SQL 표준을 위반합니다. 오래된 것 아래 추가한 하위 토토 핫을 얻기 위한 구문*토토 핫 이름에. 예를 들어
SELECT * 도시에서*;다음을 통해 하위 테이블 스캔을 명시적으로 지정할 수 있습니다. 추가*및 명시적으로 작성하여 하위 토토 핫을 스캔하지 않도록 지정"만". 하지만 버전 7.1부터 장식되지 않은 테이블 이름의 기본 동작은 테이블 이름을 스캔하는 것입니다. 하위 테이블도 마찬가지입니다. 이전에는 기본값을 사용하지 않았습니다. 그래서. 이전 기본 동작을 얻으려면 구성을 설정하십시오. 옵션SQL_Inheritance끄기, 예를 들어,
SQL_Inheritance를 OFF로 설정;또는 다음 줄을 추가하세요토토 핫.conf파일.
상속 기능의 제한은 색인이 (고유 제약 조건 포함) 및 외래 키 제약 조건만 상속된 하위 항목이 아닌 단일 테이블에 적용됩니다. 따라서, 위의 예에서는 다른 테이블의 열을 지정합니다.참조 도시(이름)허용할 것입니다 도시 이름은 포함하지만 대문자 이름은 포함하지 않는 다른 토토 핫입니다. 이 결함은 아마도 향후 릴리스에서 수정될 것입니다.