ALTER TABLE … ALTER COLUMN¶
이 항목에서는 ALTER TABLE 문에서 ALTER COLUMN 절을 사용하여 테이블에 대한 하나 이상의 열 속성을 수정하는 방법을 설명합니다.
다음 표에 열 속성 수정을 위해 지원되거나 지원되지 않는 동작을 설명되어 있습니다.
동작 |
지원됨 |
지원 안 됨 |
참고 |
|---|---|---|---|
기본값 |
|||
열의 기본값을 삭제합니다(즉,
DROP DEFAULT). |
✔ |
열과 기본값이 ALTER TABLE 명령으로 정의된 경우 허용되지 않습니다. 자세한 내용은 아래의 사용법 노트 를 참조하십시오. |
|
열의 기본 시퀀스(즉,
SET DEFAULT seq_name.NEXTVAL)를 변경합니다. |
✔ |
이미 시퀀스가 있는 열에만 사용합니다. |
|
기본값이 시퀀스가 아닌 경우 열의 기본값을 변경합니다.
|
✔ |
||
열의 기본값을 추가합니다.
|
✔ |
||
Null 허용 여부 |
|||
열의 Null 허용 여부를 변경합니다(즉
SET NOT NULL 또는 DROP NOT NULL). |
✔ |
||
데이터 타입 |
|||
✔ |
|||
✔ |
|||
✔ |
|||
✔ |
|||
✔ |
|||
✔ |
|||
✔ |
|||
✔ |
새 정밀도가 현재 열에 있는 모든 값을 유지하기에 충분한 경우에만 허용됩니다. 또한, 정밀도를 낮추면 Time Travel에 영향을 줄 수 있습니다(자세한 내용은 사용법 노트 참조). |
||
✔ |
|||
설명 |
|||
열에 대한 설명을 설정하거나 설정을 해제합니다.
|
✔ |
||
마스킹 정책 |
|||
열에 대한 마스킹 정책 을 설정하거나 설정 해제합니다.
|
✔ |
||
프로젝션 정책 |
|||
열에 대한 프로젝션 정책 을 설정하거나 설정 해제합니다.
|
✔ |
||
오브젝트 태깅 |
|||
열에서 태그 설정 또는 설정 해제
|
✔ |
열은 최대 20개의 태그를 지원할 수 있으며 태그 문자열 값의 최대 문자 수는 256자입니다. |
- 참고 항목:
ALTER TABLE , CREATE TABLE , DROP TABLE , SHOW TABLES , DESCRIBE TABLE
구문¶
사용법 노트¶
단일 ALTER TABLE 문을 사용하여 테이블의 여러 열을 수정할 수 있습니다. 각 변경 사항은 쉼표로 구분하여 수정할 열과 열 속성으로 구성된 절로 지정됩니다.
ALTER또는MODIFY키워드를 사용하여 문의 절 목록(즉, 수정할 열/속성)을 시작합니다.괄호를 사용해 절을 그룹화할 수 있지만, 필수 사항은 아닙니다.
각 절에
COLUMN키워드를 지정할 수 있지만, 필수 사항은 아닙니다.절은 어떤 순서로든 지정할 수 있습니다.
열을
NOT NULL로 설정할 때 열에 NULL 값이 포함되어 있으면 오류가 반환되고 열에 아무런 변경 사항도 적용되지 않습니다.반정형 데이터 타입(ARRAY, OBJECT, VARIANT)을 사용하는 열은 테이블이 비어 있는 경우를 제외하고는
NOT NULL로 설정할 수 없습니다. 테이블에 행이 포함된 경우 이러한 열을NOT NULL로 설정하는 것은 지원되지 않으며 오류가 발생합니다.열의 기본 시퀀스를 변경하려면 열에 기본 시퀀스가 이미 있어야 합니다.
ALTER TABLE ... SET DEFAULT <seq_name>명령을 사용하여 아직 시퀀스가 없는 열에 시퀀스를 추가할 수 없습니다.DEFAULT값이 있는 열을 추가하도록 테이블을 변경하면 해당 열의 기본값을 삭제할 수 없습니다. 예를 들어, 다음 문 시퀀스에서 마지막ALTER TABLE ... ALTER COLUMN문은 오류를 발생시킵니다.이 제한은 열이 추가되기 전에 삽입된 행의 값과 열이 추가된 후에 삽입된 행 사이의 불일치를 방지합니다. 기본값이 삭제된 경우 열에는 다음이 포함됩니다.
열이 추가되기 전에 삽입된 행의 NULL 값입니다.
열이 추가된 후에 행의 기본값이 삽입되었습니다.
테이블 복제본에서 열 기본값을 삭제하는 작업도 수행할 수 없습니다.
열에 대해
TYPE을 설정할 때 지정된 형식(즉,type)은 NUMBER 또는 텍스트 데이터 타입 (VARCHAR, STRING, TEXT 등)이어야 합니다.NUMBER 데이터 타입의 경우
TYPE을 사용해 다음을 수행할 수 있습니다.지정된 숫자 열의 정밀도를 높입니다.
새 정밀도가 현재 열에 있는 모든 데이터 값을 유지하기에 충분한 경우 지정된 숫자 열의 정밀도를 낮춥니다.
텍스트 데이터 타입의 경우 열 길이를 늘리는 데는
TYPE만 사용할 수 있습니다.
열의 정밀도가 Time Travel에 보관된 모든 열 데이터의 최대 정밀도 미만으로 감소하면 먼저 정밀도부터 높여야 테이블을 복원할 수 있습니다.
:doc:`대화형 테이블</user-guide/interactive>`의 경우, 현재 ALTER TABLE MODIFY COLUMN 명령과 함께 사용할 수 있는 절은 COMMENT 및 UNSET COMMENT뿐입니다.
마스킹 정책의 경우:
USING절과FORCE키워드는 모두 선택 사항으로, 둘 중 어떤 것도 열에 대한 마스킹 정책을 설정할 필요가 없습니다.USING절과FORCE키워드는 따로 사용하거나 함께 사용할 수 있습니다. 자세한 내용은 다음을 참조하십시오.조건부 열을 사용하는 단일 마스킹 정책은 테이블의 열 구조가 정책에 지정된 열과 일치하는 경우 여러 테이블에 적용할 수 있습니다.
마스킹 정책으로 하나 이상의 테이블 열을 수정하거나 행 액세스 정책으로 테이블 자체를 수정할 때, POLICY_CONTEXT 함수를 사용하여, 마스킹 정책으로 보호되는 열과 행 액세스 정책으로 보호되는 테이블에 대한 쿼리를 시뮬레이션합니다.
메타데이터 관련(예:
COMMENT필드):주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
예¶
설정 예:
t1 에 대해 다음과 같이 변경합니다.
NOT NULL 열
c1을 NULL로 변경합니다.열
c2의 기본값을 삭제하고 열c3의 기본 시퀀스를 변경합니다.열
c4의 길이를 늘리고 열의 기본값을 삭제합니다.열
c5에 대한 설명을 추가합니다.
이전 예와 같지만, 명령의 다목적성/유연성을 설명하기 위해 다음과 같이 변경했습니다.
모든 작업이 단일
ALTER COLUMN절에서 실행됩니다.절 내부의 열 순서가 다릅니다.
SET DATA TYPE을 간단히TYPE으로 줄였습니다.이 예는 똑같은 결과를 냅니다.
테이블 열에 열 수준 보안 마스킹 정책을 적용합니다.
테이블 열에서 열 수준 보안 마스킹 정책을 설정 해제합니다.