추가 제약 조건 세부 정보¶
이 항목의 내용:
제약 조건에 대한 보안 권한¶
기본 키 또는 고유한 제약 조건 만들기:
제약 조건을 추가하기 위해 기존 테이블을 변경할 때, 사용자의 현재 역할은 테이블에 대한 OWNERSHIP 권한이 있어야 합니다.
새 테이블을 만들 때, 사용자의 현재 역할은 테이블을 만들 스키마에 대한 CREATE TABLE 권한이 있어야 합니다.
외래 키 제약 조건 만들기:
사용자의 현재 역할은 외래 키 테이블에 대한 OWNERSHIP 권한이 있어야 합니다.
사용자의 현재 역할은 기본/고유 키 테이블에 대한 REFERENCES 권한이 있어야 합니다.
GRANT <권한> 및 REVOKE <권한> 명령을 사용해 REFERENCES 권한을 역할에 부여하고 부여한 권한을 취소할 수 있습니다.
GRANT REFERENCES ON TABLE <pk_table_name> TO ROLE <role_name> REVOKE REFERENCES ON TABLE <pk_table_name> FROM ROLE <role_name>
복사 명령의 제약 조건 지원¶
Snowflake는 CREATE TABLE 을 사용해 테이블 복사본 만들기를 지원합니다.
빈 복사본을 만들려면 CREATE TABLE … LIKE를 사용하십시오.
복제본을 만들려면 CREATE TABLE … CLONE을 사용하십시오.
그 밖에도, 스키마 또는 데이터베이스를 복제하면 테이블의 복사본이 자동으로 생성됩니다.
테이블의 복사본을 만드는 방식과 상관없이, 원본 테이블에 대한 제약 조건도 복사됩니다. 참조하는 테이블(외래 키 테이블) 및 참조되는 테이블(기본 키 테이블)과 함께 외래 키를 복사할 때 다음 상황이 발생할 수 있습니다.
두 테이블이 모두 같은 명령으로 복사되는 경우에는(예: 스키마 또는 데이터베이스 복제 중) 참조하는 새 테이블과 참조되는 테이블 사이에 새 외래 키가 생성됩니다.
참조하는 테이블만 복사되면 참조하는 테이블에 새 외래 키가 생성되는데, 이는 원래 기본 키 테이블을 참조되는 테이블로 가리키는 것입니다.
참조되는 테이블만 복사되면 기본/고유 키가 복사되더라도 새 외래 키가 생성되지 않습니다.
결과적으로, 사용자가 참조하는 테이블과 참조되는 테이블을 따로 복사하는 경우에는 새 외래 키를 수동으로 만들거나 새 외래 키의 기본 키 테이블을 수동으로 변경해야 합니다.
GET_DDL의 제약 조건 지원¶
Snowflake는 GET_DDL 의 제약 조건을 지원하지만, 다음 사항에 유의하십시오.
NOT NULL
및DEFAULT
와 같은 단일 열 전용 제약 조건은 열 정의와 함께 인라인으로 재구성됩니다.고유/기본/외래 키와 같은 테이블 제약 조건은 단일 열로 구성되어 있더라도 항상 아웃오브 라인 제약 조건으로 재구성됩니다.
명명되지 않은 제약 조건(즉, 시스템에서 생성된 이름을 가진 제약 조건)의 경우, 시스템에서 생성된 이름이 GET_DDL 에 의해 반환되지 않습니다.
제약 조건에 대한 설명¶
다른 데이터베이스 오브젝트 및 구문과 마찬가지로, Snowflake는 제약 조건에 대한 설명을 제공할 수 있도록 지원합니다. 다음 두 가지 방법으로 제약 조건에 설명을 추가할 수 있습니다.
아웃오브 라인 제약 조건은 COMMENT 절을 지원하는데, 이 절에서 제약 조건을 정의하는 동안 설명을 지정할 수 있습니다.
설명으로 인해 모호한 부분이 생길 수 있으므로, 제약 조건을 인라인으로 정의할 때는 설명이 허용되지 않습니다.
COMMENT 명령을 사용하여 제약 조건에 대한 설명을 설정할 수도 있습니다.