CREATE OR ALTER <오브젝트>¶
CREATE OR ALTER 명령은 CREATE 명령과 ALTER 명령의 기능을 결합한 DDL 명령으로, CREATE <오브젝트> 명령에서 지원하는 구문과 ALTER <오브젝트> 명령의 제한을 사용하여 오브젝트를 정의할 수 있습니다.
이 명령은 데이터 및 연결을 유지하므로 데이터 및 기타 상태, 태그 연결 및 연결된 정책, 오브젝트에 대한 권한 부여가 보존됩니다. 그러나 일부 오브젝트 변환으로 인해 데이터가 손실될 수 있습니다. 예를 들어, CREATE OR ALTER TABLE 문으로 인해 열이 삭제되는 경우 열에 포함된 모든 데이터가 삭제됩니다.
CREATE OR ALTER 명령을 사용하면 선언적이고 비강제적인 메서드를 사용하여 오브젝트에 증분 업데이트를 적용할 수 있습니다. CREATE OR ALTER 문을 실행하면 다음 결과 중 하나가 표시됩니다.
오브젝트가 존재하지 않으면 정의에 따라 생성됩니다.
오브젝트가 존재하면 문에 정의된 오브젝트로 변경됩니다.
오브젝트가 이미 정의와 일치하는 경우 변경되지 않은 상태로 유지됩니다.
이 명령은 오브젝트에 대한 데이터, 상태, 태그 연결, 첨부된 정책 및 권한 부여를 보존합니다. 그러나 일부 변환으로 인해 데이터가 손실될 수 있습니다. 예를 들어, CREATE OR ALTER TABLE 문이 열을 삭제하는 경우 해당 열의 데이터는 손실되지만 Time Travel을 사용하여 복구할 수 있습니다.
- 참고 항목:
구문¶
CREATE OR ALTER <object_type> <object_name>
[ <object_type_properties> ]
[ <object_type_params> ]
[ COMMENT = '<string_literal>' ]
여기서 object_type_properties
와 object_type_params
는 오브젝트 유형에 따라 다릅니다.
특정 구문, 사용법 노트, 예제는 다음을 참조하십시오.
계정 오브젝트:
데이터베이스 오브젝트:
일반적인 사용법 노트¶
데이터 거버넌스: CREATE OR ALTER 명령은 데이터 거버넌스 변경을 지원하지 않습니다. 기존 태그 또는 정책은 CREATE OR ALTER 문의 영향을 받지 않으며 변경되지 않은 상태로 유지됩니다.
오브젝트 속성 및 매개 변수 설정 해제하기: 이전에 설정된 속성 또는 매개 변수가 수정된 오브젝트 정의에 없는 경우 설정을 해제합니다.
명시적 매개 변수 값을 설정 해제하면 매개 변수가 기본값으로 재설정됩니다. 매개 변수가 대상 오브젝트를 포함하는 오브젝트에 설정된 경우 대상 오브젝트는 해당 매개 변수가 포함된 오브젝트에 설정된 값을 상속합니다. 그렇지 않으면 오브젝트의 매개 변수 값이 기본값으로 재설정됩니다.
원자성: CREATE OR ALTER TABLE 명령은 현재 원자성을 보장하지 않습니다. 즉, 실행 중에 CREATE OR ALTER TABLE 문이 실패하는 경우 변경 사항의 하위 집합이 테이블에 적용되었을 수 있습니다. 부분적인 변경 가능성이 있는 경우 대부분의 경우 오류 메시지에는 다음 텍스트가 포함됩니다.
CREATE OR ALTER execution failed. Partial updates may have been applied.
예를 들어, 문이 테이블에 열
A
를 삭제하고 새 열B
를 추가하려고 하는데 문이 중단되는 경우 열A
는 삭제되었지만 열B
는 추가되지 않았을 수 있습니다.참고
변경 사항이 부분적으로 적용된 경우 결과 테이블은 여전히 유효한 상태이며 추가 ALTER TABLE 문을 사용하여 원래의 변경 결과 세트를 완료할 수 있습니다.
부분 업데이트에서 복구하려면 Snowflake에서 다음 복구 메커니즘을 권장합니다.
순방향 수정
CREATE OR ALTER TABLE 문을 다시 실행합니다. 두 번째 시도에서 문이 성공하면 목표 상태를 달성한 것입니다.
오류 메시지를 조사합니다. 가능한 경우 오류를 수정하고 CREATE OR ALTER TABLE 문을 다시 실행합니다.
롤백
순방향 수정을 수행할 수 없는 경우 Snowflake는 부분적인 변경 사항을 수동으로 롤백하는 것을 권장합니다.
DESCRIBE TABLE 및 SHOW TABLES 명령을 사용하여 테이블의 상태를 조사합니다. 어떤 부분 변경 사항이 적용되었는지 확인합니다(있는 경우).
부분적인 변경이 적용된 경우 적절한 ALTER TABLE 문을 실행하여 테이블을 원래 상태로 되돌립니다.
참고
일부 경우에는 일부 변경 사항을 실행 취소할 수 없을 수도 있습니다. 자세한 내용은 ALTER TABLE … ALTER COLUMN 항목에서 열 속성 수정 시 지원되는 작업 및 지원되지 않는 작업을 참조하십시오.
부분 업데이트에서 복구하는 데 도움이 필요한 경우 Snowflake 지원 으로 문의하십시오.
제한 사항¶
CREATE OR ALTER <오브젝트> 명령의 특정 제한 사항은 오브젝트에 따라 다릅니다. 제한의 몇 가지 예제는 다음과 같습니다.
CREATE OR ALTER TABLE 명령은 검색 최적화가 CREATE TABLE 구문의 일부가 아니므로 검색 최적화를 지원하지 않습니다.
테이블에 있는 열의 데이터 타입을 호환되지 않는 데이터 타입으로 변경할 수 없습니다.
기존 뷰의 정의는 변경할 수 없습니다.
작업을 변경하려면 먼저 작업을 일시 중단해야 합니다.
오브젝트 생성을 위한 베리언트 구문(예: CREATE OR ALTER TABLE … AS SELECT)은 현재 지원되지 않습니다.
특정 오브젝트에 대한 제한 사항은 오브젝트에 대한 참조 항목 섹션을 참조하십시오.
사용 사례 예제¶
애플리케이션에 대해 Snowflake 오브젝트를 설정하는 SQL 스크립트가 있는 경우, 스크립트에 CREATE OR ALTER <오브젝트> 문을 사용하여 개발, 테스트 및 프로덕션 환경 전체에 변경 사항을 더 쉽게 배포할 수 있습니다. 애플리케이션이 발전함에 따라 스크립트를 수정할 수 있습니다.
CREATE OR ALTER <오브젝트> 문을 사용하면 새 환경에서 스크립트를 실행하는 동시에 기존 환경에서 스크립트를 다시 실행할 수 있으므로 원하는 오브젝트 정의를 한 번 작성하여 여러 환경에 적용할 수 있습니다.