토토 캔 된 열은 항상 다른 열에서 계산되는 특수 열입니다. 따라서 열에 대한 뷰는 테이블에 대한 것입니다. 토토 캔 된 열에는 두 가지 종류가 있습니다 : 저장 및 가상. 저장된 토토 캔 열은 작성 (삽입 또는 업데이트)시 (삽입 또는 업데이트) 계산되며 마치 정상적인 열인 것처럼 저장을 차지합니다. 가상 토토 캔 열은 스토리지를 차지하지 않으며 읽을 때 계산됩니다. 따라서 가상 토토 캔 열은보기와 유사하고 저장된 토토 캔 열은 구체화 된 뷰와 유사합니다 (항상 자동으로 업데이트된다는 제외)..
토토 캔 된 열을 만들려면를 사용하십시오.항상 토토 캔
조항테이블 토토 캔
, 예 :
테이블 사람 만들기 (
...,
height_cm 숫자,
height_in 숫자항상 토토 캔 (height_cm / 2.54));
토토 캔 된 열은 기본적으로 가상 종류입니다. 키워드 사용Virtual
또는저장
선택을 명시 적으로 만들기 위해. 보다테이블 토토 캔자세한 내용은
토토 캔 된 열은 직접 작성할 수 없습니다. 안에삽입
또는업데이트
명령, 토토 캔 된 열에 대해 값을 지정할 수 없지만 키워드기본값
지정 될 수 있습니다.
기본값과 토토 캔 열이있는 열의 차이점을 고려하십시오. 열 기본값은 다른 값이 제공되지 않은 경우 행이 처음 삽입되면 한 번 평가됩니다. 행이 변경 될 때마다 토토 캔 된 열이 업데이트되고 재정의 할 수 없습니다. 열 기본값은 테이블의 다른 열을 참조 할 수 없습니다. 세대 표현은 일반적으로 그렇게 할 것입니다. 열 기본값은 휘발성 함수를 사용할 수 있습니다 (예 :random ()
또는 현재 시간을 참조하는 기능; 토토 캔 된 열에는 허용되지 않습니다.
토토 캔 된 열과 관련된 토토 캔 된 열 및 테이블의 정의에 여러 제한이 적용됩니다.
토토 캔 표현식은 불변 함수 만 사용할 수 있으며 하위 쿼리를 사용하거나 어떤 식 으로든 현재 행 외에 다른 것을 참조 할 수 없습니다..
토토 캔 표현식은 다른 토토 캔 열을 참조 할 수 없습니다.
토토 캔 표현식은을 제외하고 시스템 열을 참조 할 수 없습니다.Tableoid
.
가상 토토 캔 열에 사용자 정의 유형이 없으며 가상 토토 캔 열의 토토 캔 표현식은 사용자 정의 기능 또는 유형을 참조해서는 안되며, 즉 내장 함수 또는 유형 만 사용할 수 있어야합니다. 이는 운영자 또는 캐스트의 기초가되는 함수 또는 유형과 같이 간접적으로 적용됩니다. (이 제한은 저장된 토토 캔 된 열에 대해 존재하지 않습니다.)
토토 캔 된 열에 열 기본값 또는 ID 정의를 가질 수 없습니다.
토토 캔 열이 파티션 키의 일부가 될 수 없습니다.
외국 테이블은 열을 토토 캔 할 수 있습니다. 보다PostgreSQL자세한 내용.
상속 및 분할 용 :
상위 열이 토토 캔 된 열인 경우 자식 열은 동일한 종류 (저장 또는 가상)의 토토 캔 열이어야합니다. 그러나 어린이 칼럼은 다른 세대 표현을 가질 수 있습니다.
저장된 토토 캔 열의 경우, 행이 실제로 적용되는 동안 적용되는 토토 캔 표현식은 행이 물리적으로 들어있는 테이블과 관련된 것입니다. (이것은 열 기본값의 동작과는 다릅니다.
상위 열이 토토 캔 된 열이 아닌 경우 자식 열을 토토 캔해서는 안됩니다.
상속 된 테이블의 경우, 아무 것도없이 자식 열 정의를 작성하는 경우토토 캔
조항테이블 작성 ... 상속
, 그런 다음토토 캔
조항은 부모로부터 자동으로 복사됩니다.Alter Table ... 상속
부모와 자식 열이 이미 토토 캔 상태와 일치한다고 주장하지만 세대 표현이 일치하도록 요구하지는 않습니다.
유사하게 분할 된 테이블의 경우, 아무 것도없이 자식 열 정의를 작성하는 경우토토 캔
조항테이블 토토 캔 ... 파티션
, 그런 다음토토 캔
조항은 부모로부터 자동으로 복사됩니다.Alter Table ... 첨부 파티션
부모와 자식 열이 이미 토토 캔 상태와 일치한다고 주장하지만 세대 표현이 일치하지 않아야한다고 주장합니다.
다중 상속의 경우, 하나의 부모 열이 토토 캔 된 열인 경우 모든 부모 열은 열을 토토 캔해야합니다. 그들이 모두 같은 세대 표현을 가지고 있지 않다면, 아동에 대한 원하는 표현은 명시 적으로 지정되어야합니다.
토토 캔 된 열의 사용에 추가 고려 사항이 적용됩니다.
토토 캔 된 열은 기본 기본 열과 별도로 액세스 권한을 유지합니다. 따라서 특정 역할이 토토 캔 된 열에서 읽을 수 있지만 기본 기본 열에서 읽을 수 있도록 준비 할 수 있습니다.
가상 토토 캔 열의 경우 토토 캔 표현식이 누출 기능 만 사용하는 경우에만 완전히 안전합니다 (참조기능 만들기), 그러나 이것은 시스템에 의해 시행되지 않습니다.
토토 캔 된 열을 사용하여 토토 캔 표현식이 쿼리에서 직접 호출 된 것처럼 표현식이 실제로 실행되거나 쓰기시 표현식이 실제로 실행될 때 토토 캔 표현식에 사용 된 기능의 권한이 확인됩니다. 토토 캔 된 열의 사용자는 토토 캔 표현식에서 사용하는 모든 기능을 호출 할 권한이 있어야합니다. 토토 캔 표현식의 함수는 함수가 |보안 소개
또는Security Definer
.
토토 캔 된 열은 개념적으로, 이후에 업데이트되었습니다전
트리거가 실행되었습니다. 따라서 a의 기본 열로 변경됩니다.전
트리거는 토토 캔 된 열에 반영됩니다. 그러나 반대로, 토토 캔 된 열에 액세스 할 수 없습니다전
트리거.
토토 캔 된 열은 논리 복제 중에에 따라 복제 할 수 있습니다.출판물 만들기
매개 변수publish_generated_columns
또는 열 목록에 포함하여출판물 만들기
명령. 이것은 현재 저장된 토토 캔 된 열에 대해서만 지원됩니다. 보다PostgreSQL : 문서 : 18 : 29.6. 스포츠 토토 캔 베트맨 된 열 복제자세한 내용.