카테고리:

테이블, 뷰 및 시퀀스 DDL

ALTER VIEW

기존 뷰의 속성을 수정합니다. 현재 유일하게 지원되는 작업은 다음과 같습니다.

  • 뷰 이름 바꾸기.

  • 보안 뷰로 변환(또는 되돌리기).

  • 뷰에 대한 설명 추가, 덮어쓰기, 제거.

이 명령을 사용하여 뷰에 대한 정의를 변경할 수 없습니다. 뷰 정의를 변경하려면 뷰를 삭제한 다음 다시 만들어야 합니다.

참고 항목:

CREATE VIEW , DROP VIEW , SHOW VIEWS , DESCRIBE VIEW

이 항목의 내용:

구문

ALTER VIEW [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER VIEW [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'

ALTER VIEW [ IF EXISTS ] <name> UNSET COMMENT

ALTER VIEW <name> SET SECURE

ALTER VIEW <name> UNSET SECURE

ALTER VIEW [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER VIEW [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER VIEW [ IF EXISTS ] <name>
  ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , ... ])

ALTER VIEW [ IF EXISTS ] <name>
  DROP ROW ACCESS POLICY <policy_name>

ALTER VIEW [ IF EXISTS ] <name>
  ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , ... ])
  , DROP ROW ACCESS POLICY <policy_name>

ALTER VIEW [ IF EXISTS ] <name> DROP ALL ROW ACCESS POLICIES

ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> SET MASKING POLICY <policy_name> [ USING ( <col_name> , cond_col_1 , ... ) ]
                                                                                            [ FORCE ]

ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> UNSET MASKING POLICY

ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> SET TAG <tag_name> = '<string_literal>' [ , <tag_name> = '<string_literal>' ... ]

ALTER VIEW <name> { ALTER | MODIFY } COLUMN <col_name> UNSET TAG <tag_name> [ , <tag_name> ... ]

매개 변수

name

변경할 뷰의 식별자를 지정합니다. 식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

RENAME TO new_name

뷰에 대해 새 식별자를 지정하는데, 스키마에 대해 고유한 식별자여야 합니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

선택적으로 오브젝트의 이름을 바꾸는 동안 오브젝트를 다른 데이터베이스 및/또는 스키마로 이동할 수 있습니다. 그러려면 각각 db_name.schema_name.object_name 또는 schema_name.object_name 형식으로 새 데이터베이스 및/또는 스키마 이름을 포함하는 정규화된 new_name 값을 지정하십시오.

참고

  • 대상 데이터베이스 및/또는 스키마가 이미 있어야 합니다. 또한, 새 위치에 이름이 같은 오브젝트가 있으면 안 됩니다. 그렇지 않으면 문이 오류를 반환합니다.

  • 오브젝트 소유자(즉, 오브젝트에 대한 OWNERSHIP 권한을 가진 역할) 역시 대상 스키마를 소유하지 않는 한 오브젝트를 관리되는 액세스 스키마로 이동하는 것은 금지됩니다.

오브젝트의 이름이 바뀌면 그 오브젝트를 참조하는 다른 오브젝트도 새 이름으로 업데이트해야 합니다.

SET ...

뷰에 대해 설정할 속성을 지정합니다.

SECURE

뷰를 보안으로 지정합니다.

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

태그 이름과 태그 문자열 값을 지정합니다.

태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.

문에서 태그를 지정하는 방법에 대한 자세한 내용은 오브젝트 및 열에 대한 태그 할당량 섹션을 참조하십시오.

COMMENT = 'string_literal'

뷰에 대한 설명을 추가하거나 기존 설명을 덮어씁니다.

참고

각 뷰 속성을 개별적으로 설정해야 합니다.

UNSET ...

뷰에 대해 설정 해제할 속성을 지정하여 기본값으로 재설정합니다.

  • SECURE

  • TAG TAG tag_name = 'tag_value' [, TAG tag_name = 'tag_value' ... ]

  • COMMENT

속성을 재설정할 때는 이름만 지정하십시오. 속성 값을 지정하면 오류가 반환됩니다.

참고

각 뷰 속성을 개별적으로 재설정해야 합니다.

policy_name

행 액세스 정책의 식별자로, 스키마에 고유해야 합니다.

ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , ])

뷰에 행 액세스 정책을 추가합니다.

하나 이상의 열 이름을 지정해야 합니다. 각 열 이름을 구분하는 쉼표로 추가 열을 지정할 수 있습니다.

DROP ROW ACCESS POLICY <policy_name>

뷰에서 행 액세스 정책을 삭제합니다.

DROP ALL ROW ACCESS POLICIES

뷰에서 모든 행 액세스 정책 연결을 삭제합니다.

이 식은 스키마에서 행 액세스 정책을 삭제한 후에 뷰에서 정책을 삭제할 때 유용합니다.

ALTER | MODIFY <col_name> SET MASKING POLICY <policy_name>

뷰 열에 열 수준 보안 마스킹 정책을 적용합니다.

USING ( col_name , cond_col_1 ... )

조건부 마스킹 정책 SQL 식에 전달할 인자를 지정합니다.

목록의 첫 번째 열은 데이터를 마스킹하거나 토큰화할 정책 조건에 대한 열을 지정하며, 마스킹 정책이 설정된 열과 반드시 일치해야 합니다.

추가 열은 첫 번째 열에 대해 쿼리가 수행될 때 쿼리 결과의 각 행에 있는 데이터를 마스킹할지 또는 토큰화할지 결정하기 위해 평가할 열을 지정합니다.

USING 절을 생략하면 Snowflake는 조건부 마스킹 정책을 일반 마스킹 정책 으로 취급합니다.

FORCE

열에 현재 설정된 마스킹 정책을 단일 문에서 다른 마스킹 정책으로 바꿉니다.

마스킹 정책이 열에 현재 설정되어 있지 않으면 이 키워드를 지정해도 아무 효과가 없습니다.

자세한 내용은 열의 마스킹 정책 바꾸기 섹션을 참조하십시오.

ALTER | MODIFY <col_name> UNSET MASKING POLICY

뷰 열에서 열 수준 보안 마스킹 정책을 제거합니다.

사용법 노트

  • 뷰 소유자(즉, 뷰에 대한 OWNERSHIP 권한을 가진 역할) 역시 대상 스키마를 소유하지 않는 한 (ALTER VIEW … RENAME TO 구문을 사용하여) 뷰를 관리되는 액세스 스키마로 이동하는 것은 금지됩니다.

  • 마스킹 정책의 경우:

    • USING 절과 FORCE 키워드는 모두 선택 사항으로, 둘 중 어떤 것도 열에 대한 마스킹 정책을 설정할 필요가 없습니다. USING 절과 FORCE 키워드는 따로 사용하거나 함께 사용할 수 있습니다. 자세한 내용은 다음을 참조하십시오.

    • 조건부 열을 사용하는 단일 마스킹 정책은 테이블의 열 구조가 정책에 지정된 열과 일치하는 경우 여러 테이블에 적용할 수 있습니다.

    • 마스킹 정책으로 하나 이상의 테이블 열을 수정하거나 행 액세스 정책으로 테이블 자체를 수정할 때, POLICY_CONTEXT 함수를 사용하여, 마스킹 정책으로 보호되는 열과 행 액세스 정책으로 보호되는 테이블에 대한 쿼리를 시뮬레이션합니다.

  • 조건부 열을 사용하는 단일 마스킹 정책은 뷰의 열 구조가 정책에 지정된 열과 일치하는 경우 여러 뷰에 적용할 수 있습니다.

  • 행 액세스 정책의 경우:

    • Snowflake는 단일 SQL 문에서 행 액세스 정책 추가 및 삭제를 지원합니다.

      예를 들어 테이블에 이미 설정된 행 액세스 정책을 다른 정책으로 바꾸려면 먼저 행 액세스 정책을 삭제한 다음 새 행 액세스 정책을 추가하십시오.

    • 주어진 리소스(즉, 테이블 또는 뷰)의 경우, 행 액세스 정책을 ADD 또는 DROP 하려면 스키마에 대한 APPLY ROW ACCESS POLICY 권한 또는 리소스에 대한 OWNERSHIP 권한과 행 액세스 정책 리소스에 대한 APPLY 권한이 있어야 합니다.

    • 테이블 또는 뷰는 한 번에 하나의 행 액세스 정책으로만 보호할 수 있습니다. 정책 본문이 행 액세스 정책으로 보호되는 테이블 또는 뷰 열이나 마스킹 정책으로 보호되는 열을 참조하는 경우 정책을 추가하는 데 실패합니다.

      마찬가지로, 마스킹 정책 본문이 행 액세스 정책이나 다른 마스킹 정책으로 보호되는 테이블을 참조하는 경우 테이블 열에 마스킹 정책을 추가하는 데 실패합니다.

    • 행 액세스 정책을 시스템 뷰 또는 테이블 함수에 적용할 수 없습니다.

    • 다른 DROP <오브젝트> 작업과 마찬가지로, 행 액세스 정책이 추가되지 않은 리소스에서 행 액세스 정책을 삭제하려고 하면 Snowflake가 오류를 반환합니다.

    • 오브젝트에 행 액세스 정책과 하나 이상의 열 수준 보안 마스킹 정책이 모두 있는 경우 행 액세스 정책이 먼저 평가됩니다.

  • 메타데이터 관련:

    주의

    고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.

뷰 이름을 view1 에서 view2 로 바꾸기:

ALTER VIEW view1 RENAME TO view2;

뷰를 보안 뷰로 변환:

ALTER VIEW view1 SET SECURE;

보안 뷰를 일반 뷰로 되돌리기:

ALTER VIEW view1 UNSET SECURE;

뷰 열에 열 수준 보안 마스킹 정책 적용:

-- single column

ALTER VIEW user_info_v MODIFY COLUMN ssn_number SET MASKING POLICY ssn_mask_v;

-- multiple columns

ALTER VIEW user_info_v MODIFY
    COLUMN ssn_number SET MASKING POLICY ssn_mask_v
  , COLUMN dob SET MASKING POLICY dob_mask_v
;

뷰 열에서 열 수준 보안 마스킹 정책 설정 해제:

-- single column

ALTER VIEW user_info_v modify column ssn_number unset masking policy;

-- multiple columns

ALTER VIEW user_info_v modify
    column ssn_number unset masking policy
  , column dob unset masking policy
;

다음은 뷰에 행 액세스 정책을 추가하는 예입니다. 정책을 설정한 후, 정보 스키마 를 검사하여 확인할 수 있습니다.

alter view v1
  add row access policy rap_v1 on (empl_id);

다음은 뷰에서 행 액세스 정책을 삭제하는 예입니다. 정보 스키마 를 쿼리하여 정책이 삭제되었음을 확인합니다.

alter view v1
  drop row access policy rap_v1;

다음은 뷰에 대한 단일 SQL 문에서 행 액세스 정책 추가 및 삭제를 결합하는 방법을 보여주는 예입니다. 정보 스키마 를 검사하여 결과를 확인합니다.

alter view v1
  drop row access policy rap_v1_version_1,
  add row access policy rap_v1_version_2 on (empl_id);
맨 위로 이동