5.4. 토토 캔 열#

토토 캔 열은 항상 다른 열에서 계산되는 특수 열입니다. 따라서 테이블에 대한 뷰는 열에 대한 것입니다. 토토 캔 열에는 저장된 열과 가상 열의 두 가지 종류가 있습니다. 저장된 생성 열은 쓰기(삽입 또는 업데이트) 시 계산되어 일반 열인 것처럼 스토리지를 차지합니다. 가상 생성 열은 스토리지를 차지하지 않으며 읽을 때 계산됩니다. 따라서 가상 생성 열은 뷰와 유사하고 저장된 생성 열은 구체화된 뷰와 유사합니다(항상 자동으로 업데이트된다는 점만 제외).

생성된 열을 생성하려면 다음을 사용하십시오.항상 다음과 같이 생성됨테이블 생성, 예:

테이블 사용자 생성(
    ...,
    height_cm 숫자,
    height_in 숫자항상 다음과 같이 생성됨 (height_cm / 2.54)
);

토토 캔 열은 기본적으로 가상 종류입니다. 키워드를 사용하세요가상또는저장됨선택을 명시적으로 만듭니다. 참조테이블 생성자세한 내용은.

토토 캔 열은 직접 쓸 수 없습니다. 에서삽입또는업데이트명령, 토토 캔 열에는 값을 지정할 수 없지만 키워드는기본값지정될 수 있습니다.

기본 열과 생성된 열 사이의 차이점을 고려하십시오. 다른 값이 제공되지 않은 경우 행이 처음 삽입될 때 열 기본값이 한 번 평가됩니다. 생성된 열은 행이 변경될 때마다 업데이트되며 재정의될 수 없습니다. 열 기본값은 테이블의 다른 열을 참조할 수 없습니다. 일반적으로 세대 표현이 그렇게 합니다. 열 기본값은 휘발성 함수를 사용할 수 있습니다. 예를 들어무작위()또는 현재 시간을 참조하는 함수; 생성된 열에는 허용되지 않습니다.

토토 캔 열 및 토토 캔 열과 관련된 테이블의 정의에는 몇 가지 제한 사항이 적용됩니다.

  • 생성 표현식은 불변 함수만 사용할 수 있으며 하위 쿼리를 사용하거나 어떤 방식으로든 현재 행 이외의 다른 항목을 참조할 수 없습니다.

  • 생성 표현식은 다른 토토 캔 열을 참조할 수 없습니다.

  • 생성 표현식은 다음을 제외하고 시스템 열을 참조할 수 없습니다.테이블로이드.

  • 가상 생성 열은 사용자 정의 유형을 가질 수 없으며 가상 생성 열의 생성 표현식은 사용자 정의 함수 또는 유형을 참조해서는 안 됩니다. 즉, 내장 함수 또는 유형만 사용할 수 있습니다. 이는 연산자나 캐스트의 기초가 되는 함수나 유형과 같이 간접적으로도 적용됩니다. (저장된 생성 열에는 이 제한이 존재하지 않습니다.)

  • 생성된 열은 열 기본값이나 ID 정의를 가질 수 없습니다.

  • 토토 캔 열은 파티션 키의 일부가 될 수 없습니다.

  • 외부 테이블에는 토토 캔 열이 있을 수 있습니다. 참조외부 테이블 생성자세한 내용은.

  • 상속 및 파티셔닝의 경우:

    • 상위 열이 생성된 열인 경우 하위 열도 동일한 종류(저장 또는 가상)의 생성 열이어야 합니다. 그러나 하위 열은 다른 생성 표현식을 가질 수 있습니다.

      저장된 생성 열의 경우 행 삽입 또는 업데이트 중에 실제로 적용되는 생성 표현식은 행이 물리적으로 있는 테이블과 연결된 생성 표현식입니다. (이는 열 기본값의 동작과 다릅니다. 이러한 경우 쿼리에 이름이 지정된 테이블과 연결된 기본값이 적용됩니다.) 가상 생성 열의 경우 테이블을 읽을 때 쿼리에 이름이 지정된 테이블의 생성 표현식이 적용됩니다.

    • 상위 열이 토토 캔 열이 아닌 경우 해당 하위 열도 생성되어서는 안 됩니다.

    • 상속된 테이블의 경우 아무 것도 없이 하위 열 정의를 작성하는 경우생성됨테이블 생성 ... 상속그럼 그거야생성됨절은 상위 항목에서 자동으로 복사됩니다.테이블 변경 ... 상속세대 상태에 관해 상위 및 하위 열이 이미 일치한다고 주장하지만 세대 표현식이 일치하도록 요구하지는 않습니다.

    • 분할된 테이블의 경우와 유사하게, 아무 것도 없이 하위 열 정의를 작성하는 경우생성됨테이블 생성 ... 파티션그럼 그거야생성됨절은 상위 항목에서 자동으로 복사됩니다.테이블 변경 ...파티션 연결세대 상태에 관해 상위 및 하위 열이 이미 일치한다고 주장하지만 세대 표현식이 일치하도록 요구하지는 않습니다.

    • 다중 상속의 경우 하나의 상위 열이 토토 캔 열이면 모든 상위 열은 토토 캔 열이어야 합니다. 모두 동일한 생성 표현식이 없는 경우 하위 항목에 대해 원하는 표현식을 명시적으로 지정해야 합니다.

토토 캔 열 사용 시 추가 고려사항이 적용됩니다.

  • 토토 캔 열은 기본 열과 별도로 액세스 권한을 유지합니다. 따라서 특정 역할이 토토 캔 열에서는 읽을 수 있지만 기본 열에서는 읽을 수 없도록 배열하는 것이 가능합니다.

    가상 생성 열의 경우 생성 표현식이 누출 방지 기능만 사용하는 경우에만 완전히 안전합니다(참조함수 생성), 하지만 이는 시스템에 의해 시행되지 않습니다.

  • 생성 표현식에 사용된 함수의 권한은 생성 표현식이 생성된 열을 사용하여 쿼리에서 직접 호출된 것처럼 생성 표현식이 실제로 실행될 때 각각 쓰기 또는 읽기 시 검사됩니다. 생성된 열의 사용자에게는 생성 표현식에서 사용되는 모든 함수를 호출할 수 있는 권한이 있어야 합니다. 생성 표현식의 함수는 함수 정의 여부에 따라 쿼리를 실행하는 사용자 또는 함수 소유자의 권한으로 실행됩니다.보안 호출자또는보안 정의자.

  • 생성된 열은 개념적으로 다음 이후에 업데이트됩니다.이전트리거가 실행되었습니다. 따라서 a의 기본 열이 변경되었습니다.이전트리거는 토토 캔 열에 반영됩니다. 그러나 반대로 토토 캔 열에는 액세스할 수 없습니다.이전트리거.

  • 생성된 열은 다음에 따라 논리적 복제 중에 복제가 허용됩니다.간행물 작성매개변수publish_generated_columns또는 열 목록에 포함하여간행물 작성명령. 이는 현재 저장된 생성 열에 대해서만 지원됩니다. 참조PostgreSQL : 문서 : 18 : 29.6. 스포츠 토토 베트맨 된 열 복제자세한 내용은.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.