DROP SCHEMA¶
현재/지정된 데이터베이스에서 스키마를 제거합니다.
- 참고 항목:
CREATE SCHEMA , ALTER SCHEMA , DESCRIBE SCHEMA , SHOW SCHEMAS , UNDROP SCHEMA
구문¶
DROP SCHEMA [ IF EXISTS ] <name> [ CASCADE | RESTRICT ]
매개 변수¶
name
삭제할 스키마의 식별자를 지정합니다. 식별자에 공백, 특수 문자 또는 대/소문자가 혼합된 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.
스키마 식별자가 (
db_name.schema_name
형식으로) 정규화되지 않은 경우 이 명령은 세션의 현재 데이터베이스에서 스키마를 찾습니다.CASCADE | RESTRICT
스키마에 있는 임의의 테이블을 참조하는 외래 키가 있는 경우 스키마를 삭제할 수 있는지 여부를 지정합니다.
CASCADE
는 다른 테이블의 외래 키가 참조하는 기본/고유 키가 있는 테이블을 포함하여 스키마와 스키마의 모든 오브젝트를 삭제합니다.RESTRICT
는 기존 외래 키 참조에 대한 경고를 반환하고 스키마를 삭제하지 않습니다.
기본값:
CASCADE
사용법 노트¶
스키마를 삭제해도 시스템에서 영구적으로 제거되지는 않습니다. 삭제된 스키마의 버전은 스키마에 대한
DATA_RETENTION_TIME_IN_DAYS
매개 변수로 지정된 일수 동안 Time Travel 에 보존됩니다.Time Travel 보존 기간 이내에, UNDROP SCHEMA 명령을 사용하여 삭제된 스키마를 복원할 수 있습니다.
Time Travel 보존 기간이 끝날 때, 삭제된 스키마의 다음 상태는 이 스키마가 영구적인지 일시적인지에 따라 달라집니다.
영구 스키마는 Fail-safe 로 이동합니다. Fail-safe(7일)에서는 삭제된 스키마를 복구할 수 있지만, Snowflake에서만 가능합니다. 스키마가 Fail-safe 상태를 벗어나면 제거됩니다.
일시적 스키마는 Fail-safe가 없으므로, Time Travel에서 벗어날 때 제거됩니다.
삭제된 스키마는 제거된 후에는 복구할 수 없으며, 다시 만들어야 합니다.
현재, 스키마를 삭제할 때 하위 테이블의 데이터 보존 기간을 스키마의 보존 기간과 다르게 명시적으로 설정했다면 이 데이터 보존 기간 역시 허용되지 않습니다. 하위 테이블은 스키마와 같은 기간 동안 보존됩니다. 이러한 테이블의 데이터 보존 기간을 적용하려면 해당 오브젝트를 명시적으로 삭제한 후 스키마를 삭제하십시오.
스키마를 삭제한 후, 같은 이름의 스키마를 만들면 새 버전의 스키마가 생성됩니다. 이전 스키마의 삭제된 버전은 여전히 다음 방법을 사용해 복원할 수 있습니다.
현재 버전의 스키마 이름을 다른 이름으로 바꿉니다.
UNDROP SCHEMA 명령을 사용하여 이전 버전을 복원합니다.
쓰기를 허용하는 카탈로그 연결 데이터베이스 에서 이 명령은 카탈로그에 연결된 데이터베이스에서 스키마를 삭제하고 원격 카탈로그에서 해당 네임스페이스를 동시에 삭제합니다.
정책 또는 태그가 테이블 또는 뷰 열에 연결되는 경우 스키마를 성공적으로 삭제하려면 데이터베이스와 스키마 내에서 정책 또는 태그가 자급식이 되도록 해야 합니다. 예를 들어,
database_1
은policy_1
을 포함하고policy_1
은database_1
에서만 사용됩니다. 그렇지 않으면 허상 참조 가 발생합니다.세션 정책 또는 비밀번호 정책이 사용자 또는 계정에 설정된 경우 DROP 작업이 실패합니다.
IF EXISTS 절이 지정되고 대상 오브젝트가 존재하지 않는 경우 이 명령은 오류를 반환하지 않고 성공적으로 완료됩니다.
중요
스키마에 보존 잠금이 있는 연결된 스냅샷 정책이 있는 스냅샷 세트가 포함되어 있고 스냅샷 세트에 만료되지 않은 스냅샷이 있는 경우 스냅샷 세트가 포함된 스키마를 삭제할 수 없습니다. 이 경우 세트의 모든 스냅샷이 만료될 때까지 기다려야 합니다. 이 제한은 ACCOUNTADMIN과 같은 권한이 있는 역할과 Snowflake 지원에도 적용됩니다. 따라서 스냅샷 정책에서 보존 잠금과 긴 만료 기간을 지정할 때는 주의해야 합니다.
예¶
(CREATE SCHEMA 예에서) myschema
로 명명된 스키마 삭제하기:
DROP SCHEMA myschema; +--------------------------------+ | status | |--------------------------------| | MYSCHEMA successfully dropped. | +--------------------------------+ SHOW SCHEMAS; +---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+ | created_on | name | is_default | is_current | database_name | owner | comment | options | retention_time | |---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------| | Fri, 13 May 2016 17:26:07 -0700 | INFORMATION_SCHEMA | N | N | MYTESTDB | | Views describing the contents of schemas in this database | | 1 | | Tue, 17 Mar 2015 16:57:04 -0700 | PUBLIC | N | Y | MYTESTDB | PUBLIC | | | 1 | +---------------------------------+--------------------+------------+------------+---------------+--------+-----------------------------------------------------------+---------+----------------+