DROP ROW ACCESS POLICY
DROP ROW ACCESS POLICY
시스템에서 행 액세스 정책(row access policy)을 제거하는 명령이에요. 행 액세스 정책은 테이블이나 뷰의 행 수준 접근을 제어하는 데 사용돼요.
출처: 문서
본문
구문 (Syntax)
DROP ROW ACCESS POLICY [ IF EXISTS ] <name>
파라미터
- name — 행 액세스 정책의 식별자예요. 계정 내에서 고유해야 해요. 식별자 값은 알파벳 문자로 시작해야 하며, 전체 식별자 문자열을 큰따옴표로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없어요(예: "My object"). 큰따옴표로 묶은 식별자는 대소문자를 구분해요.
접근 제어 요구사항 (Access control requirements)
이 작업을 실행하는 역할은 최소한 다음 권한을 가져야 해요:
| Privilege | Object | Notes |
|---|---|---|
| OWNERSHIP | Schema 또는 Row access policy | 행 액세스 정책을 포함하는 스키마. OWNERSHIP은 객체 생성 역할에 자동 부여되는 특수 권한이지만, 소유 역할(또는 MANAGE GRANTS 권한이 있는 역할)이 GRANT OWNERSHIP 명령으로 다른 역할에 이전할 수도 있어요. |
스키마에서 객체를 운영하려면 부모 데이터베이스에 대한 권한이 하나 이상, 부모 스키마에 대한 권한이 하나 이상 필요해요.
사용 메모 (Usage notes)
- 행 액세스 정책을 삭제하기 전에, 다음 문장을 실행하여 행 액세스 정책이 어떤 테이블이나 뷰에 적용되어 있는지 확인해요:
SELECT * from table(information_schema.policy_references(policy_name=>''));
- 현재 리소스에 연결된 행 액세스 정책은 성공적으로 삭제할 수 없어요. DROP 문장을 실행하기 전에
ALTER TABLE또는ALTER VIEW문장으로 행 액세스 정책을 테이블이나 뷰에서 분리해야 해요. - Snowflake는 행 액세스 정책 객체에 대해 UNDROP을 지원하지 않아요. UNDROP을 사용하면 오류 메시지가 발생해요.
- 테이블 열에 행 액세스 정책이 연결되어 있으면, 그 열을 테이블에서 삭제할 수 없어요.
IF EXISTS절을 지정했을 때 대상 객체가 존재하지 않으면, 명령은 오류를 반환하지 않고 성공적으로 완료돼요.- 백업 안의 테이블이 사용하는 행 액세스 정책을 삭제할 수 있어요. 이 경우 백업에서 테이블을 복원한 후 즉시 사용할 수는 없어요. 복원된 테이블을 사용하려면 복원 후
ALTER TABLE … DROP ALL ROW ACCESS POLICIES명령을 실행해야 해요.
예시 (Example)
다음 예시는 테이블에서 행 액세스 정책을 삭제해요:
DROP ROW ACCESS POLICY rap_table_employee_info;