토토 커뮤니티 만들기

토토 커뮤니티 작성 - 새토토 커뮤니티 정의

시놉시스

생성 [또는 교체] [temp | 임시] [재귀]토토 커뮤니티이름[(column_name[, ...])]
    [ 와 함께 (view_option_name[=view_option_value] [, ...])]
    처럼쿼리[Cascaded | 로컬] 체크 옵션]

설명

토토 커뮤니티 만들기쿼리토토 커뮤니티를 정의합니다. 토토 커뮤니티는 물리적으로 구체화되지 않습니다. 대신,토토 커뮤니티가 쿼리에서 참조 될 때마다 쿼리가 실행됩니다.

토토 커뮤니티 생성 또는 교체비슷하지만 같은 이름의토토 커뮤니티가 이미 존재하면 대체됩니다. 새 쿼리는 기존토토 커뮤니티 쿼리 (즉, 동일한 순서와 동일한 데이터 유형의 동일한 열 이름)에서 생성 된 동일한 열을 생성해야하지만 목록 끝에 추가 열을 추가 할 수 있습니다. 출력 열을 야기하는 계산은 완전히 다를 수 있습니다.

스키마 이름이 제공되는 경우 (예 :토토 커뮤니티 만들기 myschema.myview ...) 그러면 뷰는 지정된 스키마에서 생성됩니다. 그렇지 않으면 현재 스키마에서 생성됩니다. 임시 뷰는 특수 스키마에 존재하므로 임시토토 커뮤니티를 만들 때 스키마 이름을 제공 할 수 없습니다. 토토 커뮤니티의 이름은 동일한 스키마에서 다른 관계 (테이블, 시퀀스, 인덱스, 뷰, 구체화 된토토 커뮤니티 또는 이물질 테이블)의 이름과 구별되어야합니다.

매개 변수

임시또는temp

지정된 경우, 뷰는 임시토토 커뮤니티로 생성됩니다. 현재 세션이 끝날 때 임시토토 커뮤니티가 자동으로 삭제됩니다. 동일한 이름을 가진 기존의 영구 관계는 현재 세션에 표시되지 않습니다. 스키마 자격이있는 이름을 참조하지 않는 한 임시토토 커뮤니티가 존재하지 않습니다.

토토 커뮤니티에 의해 참조 된 테이블 중 하나가 임시 인 경우, 뷰는 임시토토 커뮤니티로 만들어집니다 (여부임시지정되었는지 여부).

재귀

재귀 뷰를 만듭니다. 구문

재귀토토 커뮤니티 만들기 [스키마. ]View_Name(column_names) as select...;

토토 커뮤니티 만들기 [스키마. ]View_Name재귀와 마찬가지로View_Name(column_names) AS (select...) 선택column_namesFromView_Name;

view 열 이름 목록은 재귀 뷰를 위해 지정해야합니다.

이름

생성 될 뷰의 이름 (선택적으로 스키마 자격).

column_name

토토 커뮤니티 열에 사용할 이름의 선택 목록. 주어지지 않으면 열 이름이 쿼리에서 추론됩니다.

with (View_Option_name[=View_Option_Value] [, ...])

이 조항은토토 커뮤니티에 대한 선택적 매개 변수를 지정합니다. 다음 매개 변수가 지원됩니다.

check_option(enum)

이 매개 변수가 하나 일 수 있습니다로컬또는계단식, 지정과 동일합니다[cascaded | 로컬] 확인 옵션(아래 참조).

Security_Barrier(부울)

뷰가로드 레벨 보안을 제공하기위한 경우 사용해야합니다. 보다PostgreSQL : 문서 : 16 : 41.5. 토토 캔 및 특권자세한 내용은

Security_Invoker(부울)

이 옵션은 기본 기본 관계가 뷰 소유자가 아닌토토 커뮤니티 사용자의 권한에 대해 확인하게됩니다. 자세한 내용은 아래 메모를 참조하십시오.

위의 모든 옵션은 기존 뷰에서 변경 될 수 있습니다Alter View.

쿼리

aselect또는토토 커뮤니티의 열과 행을 제공하는 명령.

[cascaded | 로컬] 확인 옵션

이 옵션은 자동으로 업데이트 가능한 뷰의 동작을 제어합니다. 이 옵션이 지정되면삽입업데이트토토 커뮤니티의 명령은 새 행이 뷰 감소 조건을 충족하도록 확인합니다 (즉, 새 행이토토 커뮤니티를 통해 볼 수 있도록 새 행이 확인됩니다). 그렇지 않은 경우 업데이트가 거부됩니다. 인 경우옵션 확인지정되지 않았습니다.삽입and업데이트토토 커뮤니티의 명령은토토 커뮤니티를 통해 보이지 않는 행을 만들 수 있습니다. 다음 점검 옵션이 지원됩니다.

Local

새로운 행은토토 커뮤니티 자체에 직접 정의 된 조건에 대해서만 점검됩니다. 기본 기본 뷰에 정의 된 모든 조건은 확인되지 않습니다 (또한을 지정하지 않는 한옵션 확인17999_18003

계단식

토토 커뮤니티 조건 및 모든 기본 기본토토 커뮤니티에 대해 새로운 행이 점검됩니다. 인 경우옵션 확인지정되어 있으며 둘 다LocalNOR계단식지정된 다음계단식가정합니다.

the옵션 확인재귀토토 커뮤니티

점검 옵션자동으로 업데이트 할 수있는 뷰에서만 지원됩니다대신트리거 또는대신규칙. 자동으로 업데이트 가능한 뷰가 기본토토 커뮤니티 위에 정의 된 경우대신트리거, 그 다음로컬 점검 옵션자동으로 업데이트 가능한 뷰의 조건을 확인하는 데 사용될 수 있지만 기본토토 커뮤니티의 조건은19210_19222트리거가 확인되지 않습니다 (계단식 점검 옵션은 트리거 업 데이트 가능한토토 커뮤니티로 캐스케이드하지 않으며 트리거 업 데이트 가능한토토 커뮤니티에 직접 정의 된 체크 옵션이 무시됩니다). 견해 또는 기본 관계에가있는 경우19488_19497삽입또는업데이트다시 작성하도록 명령하면 다시 작성된 쿼리에서 모든 확인 옵션이 무시됩니다.대신규칙.

노트

사용드롭 뷰뷰를 떨어 뜨릴 수있는 진술.

토토 커뮤니티 열의 이름과 유형에 원하는 방식으로 할당됩니다. 예를 들어:

'Hello World'를 선택하여 Vista Vista를 작성하십시오.

열 이름이 기본값으로이기 때문에 나쁜 형식입니다.? 컬럼?; 또한 열 데이터 유형 기본값은텍스트, 당신이 원하는 것이 아닐 수도 있습니다. 토토 커뮤니티의 결과에서 문자열을위한 더 나은 스타일은 다음과 같습니다.

Vista Vista를 선택하여 텍스트 'Hello World'로 hello;

기본적으로,토토 커뮤니티에 참조 된 기본 기본 관계에 대한 액세스는 뷰 소유자의 권한에 의해 결정됩니다. 경우에 따라 이것은 기본 테이블에 대한 안전하지만 제한된 액세스를 제공하는 데 사용될 수 있습니다. 그러나 모든 견해가 변조에 대해 안전하지는 않습니다. 보다PostgreSQL : 문서 : 16 : 41.5. 토토 캔 및 특권자세한 내용.

토토 커뮤니티에가있는 경우Security_Invoker속성 설정true, 기본 기본 관계에 대한 액세스는 뷰 소유자가 아닌 쿼리를 실행하는 사용자의 권한에 의해 결정됩니다. 따라서 보안 호출 조회수 사용자는토토 커뮤니티 및 기본 기본 관계에 관련된 권한이 있어야합니다.

기본 기본 관계 중 하나라도 보안 개요토토 커뮤니티 인 경우 원래 쿼리에서 직접 액세스 한 것처럼 취급됩니다. 따라서 보안 인비커 뷰는없는토토 커뮤니티에서 액세스하더라도 현재 사용자의 권한을 사용하여 항상 기본 기본 관계를 확인합니다.Security_Invoker속성.

기본 기본 관계가있는 경우PostgreSQL : 문서 : 16 : 5.8. 보안 토토 베이 행enabled, 기본적으로 View 소유자의 행 수준 보안 정책이 적용되며 해당 정책에 의해 언급 된 추가 관계에 대한 액세스는 뷰 소유자의 권한에 의해 결정됩니다. 그러나토토 커뮤니티에Security_Invoker설정true

토토 커뮤니티에서 호출 된 기능은토토 커뮤니티를 사용하여 쿼리에서 직접 호출 된 것과 동일하게 처리됩니다. 따라서토토 커뮤니티 사용자는토토 커뮤니티에서 사용하는 모든 기능을 호출 할 권한이 있어야합니다. 뷰의 함수는 함수가로 정의되는지 여부에 따라 쿼리 또는 기능 소유자를 실행하는 사용자의 권한으로 실행됩니다.Security Invoker또는Security Definer. 예를 들어, 호출current_user토토 커뮤니티에서 직접 뷰 소유자가 아니라 항상 호출 사용자를 반환합니다. 이것은토토 커뮤니티의 영향을받지 않습니다Security_Invoker설정, 그래서토토 커뮤니티Security_Invoker설정거짓is아님A와 동등한보안 정의기함수와 그 개념은 혼란스럽지 않아야합니다.

사용자는 뷰를 생성하거나 교체해야합니다사용법해당 스키마에서 참조 된 객체를 찾기 위해토토 커뮤니티 쿼리에 언급 된 모든 스키마의 권한. 그러나이 조회는토토 커뮤니티가 생성되거나 교체 될 때만 발생합니다. 따라서토토 커뮤니티 사용자는 만 필요합니다.usage뷰 쿼리에 언급 된 스키마가 아니라 보안 호반토토 커뮤니티조차도 뷰를 포함하는 스키마의 권한..

언제토토 커뮤니티 생성 또는 교체기존토토 커뮤니티에서 사용됩니다.토토 커뮤니티의 선택 규칙을 정의하는 것만 더하면with (...)매개 변수와 그옵션 확인변경되었습니다. 소유권, 권한 및 비 선택 규칙을 포함한 다른토토 커뮤니티 속성은 변경되지 않았습니다. 당신은 그것을 대체 할 견해를 소유해야합니다 (여기에는 소유 역할의 구성원이 포함됩니다).

업데이트 가능한토토 커뮤니티

간단한토토 커뮤니티가 자동으로 업데이트 될 수 있습니다 : 시스템에서 허용삽입, 업데이트and삭제일반 테이블과 같은 방식으로토토 커뮤니티에 사용되는 진술. 다음 조건을 모두 만족하면토토 커뮤니티가 자동으로 업데이트됩니다.

  • 토토 커뮤니티에는 정확히 하나의 항목이 있어야합니다From목록, 테이블 또는 다른 업데이트 가능한토토 커뮤니티

  • 토토 커뮤니티 정의에는 포함해서는 안됩니다with, 별도의, 그룹 by, , Limit또는오프셋최상위의 조항.

  • 토토 커뮤니티 정의에는 설정된 작업이 포함되어서는 안됩니다 (Union, 교차또는제외) 최상위 레벨에서.

  • 뷰의 선택 목록에는 집계, 창 함수 또는 설정 함수를 포함해서는 안됩니다.

자동으로 업데이트 가능한토토 커뮤니티에는 업데이트 가능 및 업데이트 할 수없는 열의 혼합이 포함될 수 있습니다. 기본 기본 관계의 업데이트 가능한 열에 대한 간단한 참조 인 경우 열은 업데이트 가능합니다. 그렇지 않으면 열이 읽기 전용이며 AN이면 오류가 발생합니다.삽입또는업데이트명령문은 값을 할당하려고 시도합니다.

토토 커뮤니티가 자동으로 업데이트되면 시스템이 모든 변환삽입, 업데이트또는삭제기본 기본 관계에 대한 해당 진술에 대한 견해에 대한 진술.삽입충돌 업데이트조항이 완전히 지원되었습니다.

자동으로 업데이트 가능한토토 커뮤니티에 A가 포함 된 경우여기서조건, 조건은 기본 관계의 행이 수정할 수있는 행을 제한합니다업데이트and삭제토토 커뮤니티에 대한 진술. 그러나, an업데이트더 이상 줄을 변경하여 더 이상 만족하지 않도록여기서조건이므로 더 이상토토 커뮤니티를 통해 보이지 않습니다. 마찬가지로, an삽입명령은 잠재적으로 만족하지 않는 기본 관계 행을 삽입 할 수 있습니다여기서조건은토토 커뮤니티를 통해 보이지 않습니다 (충돌 업데이트토토 커뮤니티를 통해 보이지 않는 기존 행에 유사하게 영향을 줄 수 있습니다). 그만큼옵션 확인방지에 사용될 수 있습니다삽입and업데이트토토 커뮤니티를 통해 보이지 않는 행을 생성하는 명령.

자동으로 업데이트 가능한토토 커뮤니티가에 표시된 경우Security_Barrier속성 다음 모든 견해여기서조건 (및 조건 (및로 표시된 연산자를 사용한 조건LeakProof)는 View 사용자가 추가 한 조건 전에 항상 평가됩니다. 보다PostgreSQL : 문서 : 16 : 41.5. 토토 캔 및 특권자세한 내용. 이로 인해 궁극적으로 반환되지 않은 행 (사용자의 통과가 없기 때문에.여기서조건)은 여전히 ​​잠겨있을 수 있습니다.설명관계 수준에서 어떤 조건이 적용되는지 (따라서 행을 잠그지 않음)를 확인하는 데 사용될 수 있으며..

이러한 모든 조건을 충족시키지 못하는보다 복잡한토토 커뮤니티는 기본적으로 읽기 전용입니다. 시스템은 뷰에서 삽입, 업데이트 또는 삭제를 허용하지 않습니다. 생성하여 업데이트 가능한토토 커뮤니티의 효과를 얻을 수 있습니다대신뷰에서 트리거링, 시도 된 인서트 등을 다른 테이블의 적절한 동작으로 변환해야합니다. 자세한 내용은 참조트리거 만들기. 또 다른 가능성은 규칙을 만드는 것입니다 (참조규칙 작성) 그러나 실제로 트리거는 올바르게 이해하고 사용하기가 더 쉽습니다.

토토 커뮤니티에서 삽입, 업데이트 또는 삭제를 수행하는 사용자는 뷰에서 해당 삽입, 업데이트 또는 삭제해야합니다. 또한 기본적으로 View의 소유자는 기본 기본 관계에 대한 관련 권한을 가져야하는 반면, 업데이트를 수행하는 사용자는 기본 기본 관계에 대한 권한이 필요하지 않습니다 (참조.PostgreSQL : 문서 : 16 : 41.5. 토토 캔 및 특권). 그러나토토 커뮤니티에Security_Invoker설정true, 뷰 소유자가 아닌 업데이트를 수행하는 사용자는 기본 기본 관계에 관련 권한이 있어야합니다.

예제

모든 코미디 영화로 구성된토토 커뮤니티 만들기 :

뷰 코미디를 작성하십시오
    선택하다 *
    영화에서
    kind = '코미디';

이것은에있는 열이 포함 된 뷰를 만듭니다.Film토토 커뮤니티 생성시 테이블. 그렇지만*view를 작성하는 데 사용되었고, 나중에 테이블에 추가 된 열은토토 커뮤니티의 일부가 아닙니다.

로컬 점검 옵션:

View Universal_comedies를 View Create with
    선택하다 *
    코미디에서
    여기서 분류 = 'u'
    로컬 점검 옵션;

이것은를 기반으로 뷰를 만듭니다코미디토토 커뮤니티, 영화 만 표시Kind = '코미디'and분류 = 'U'. 모든 시도삽입또는업데이트새 행에없는 경우토토 커뮤니티의 행이 거부됩니다분류 = 'U', 그러나 영화Kind확인되지 않습니다.

계단식 점검 옵션:

토토 커뮤니티 pg_comedies를 만듭니다
    선택하다 *
    코미디에서
    여기서 분류 = 'pg'
    계단식 체크 옵션으로;

이것은 두 가지를 모두 점검하는 뷰를 만듭니다Kind분류새로운 행의.

업데이트 가능하고 업데이트 할 수없는 열의 혼합으로토토 커뮤니티를 만듭니다 :

뷰 코미디를 작성하십시오
    f.*,
           Country_code_to_name (F.Country_Code) Country,
           (선택 AVG (R.Rating)
            user_ratings r
            여기서 r.film_id = f.id)는 avg_rating입니다
    영화에서 f
    여기서 f.kind = '코미디';

이토토 커뮤니티는 지원됩니다삽입, 업데이트and삭제. 의 모든 열영화테이블은 업데이트 가능하지만 계산 된 열은Countryavg_rating읽기 전용입니다.

1에서 100까지의 숫자로 구성된 재귀 뷰 작성 :

재귀 뷰 생성 public.nums_1_100 (n) as
    값 (1)
모두
    NUMS_1_100에서 n+1을 선택하십시오. 여기서 n <100;

재귀 뷰의 이름이 스키마 자격이 있음에도 불구하고생성, 내부 자체 참조는 스키마 자격이 아닙니다. 암시 적으로 만들어진 CTE의 이름은 스키마 자격을 갖추지 못하기 때문입니다.

호환성

토토 커뮤니티 생성 또는 교체isPostgreSQL언어 확장. 임시 견해의 개념도 마찬가지입니다. 그만큼with (...)조항은 보안 장벽토토 커뮤니티 및 보안 호출 조회와 마찬가지로 확장입니다.

정정 제출

문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면