제약 조건 만들기

제약 조건 만들기 (Creating constraints)

제약 조건은 테이블을 만들 때 CREATE TABLE로 정의할 수도 있고, 나중에 ALTER TABLE로 추가할 수도 있어요. 이 페이지에서는 단일 컬럼 제약 조건을 인라인(inline)으로 만드는 방법과, 다중 컬럼 제약 조건을 별도 절(clause)로 만드는 방법을 설명해요.

출처: Snowflake SQL Reference

본문

제약 조건은 테이블 생성 시 CREATE TABLE로 만들 수 있고, 테이블이 이미 있다면 ALTER TABLE로 나중에 추가할 수도 있어요.

  • 단일 컬럼 제약 조건은 컬럼 정의의 일부로 인라인(inline) 생성할 수 있어요.
  • 다중 컬럼 제약 조건은 제약 조건의 컬럼을 지정하는 별도의 아웃오브라인(out-of-line) 절로 만들어야 해요.

제약 조건을 만들려면 제약 조건을 만드는 데 사용할 역할(role)에 특정 접근 제어 권한이 부여되어 있어야 해요. 자세한 내용은 접근 제어 요구 사항(Access control requirements)을 참고해요.

인라인으로 제약 조건 만들기

다음 인라인 문법은 단일 컬럼 제약 조건에만 사용할 수 있어요.

CREATE [ OR REPLACE ] TABLE <name> (<column_name> <column_type> [ <inline_constraint> ] , ... )

ALTER TABLE <name> ADD COLUMN <column_name> <column_type> [ <inline_constraint> ]

_inline_constraint_ 문법에 대한 자세한 내용은 CREATE | ALTER TABLE … CONSTRAINT를 참고해요.

아웃오브라인으로 제약 조건 만들기

다음 아웃오브라인 문법은 다중 컬럼 제약 조건에 반드시 사용해야 하며, 단일 컬럼 제약 조건에도 사용할 수 있어요.

CREATE [ OR REPLACE ] TABLE <name> ( ... , [ <outofline_constraint> ], ... )

ALTER TABLE <name> ADD <outofline_constraint>

_outofline_constraint_ 문법에 대한 자세한 내용은 CREATE | ALTER TABLE … CONSTRAINT를 참고해요.

하이브리드 테이블(hybrid tables)의 경우, ALTER TABLE로 UNIQUE나 FOREIGN KEY 제약 조건을 추가하는 것은 온라인(online) 작업이며, 테이블에 이미 있는 행도 함께 검증돼요. 자세한 내용은 기존 하이브리드 테이블에 제약 조건 추가·삭제를 참고해요.

CREATE TABLE … LIKE와 CLONE에서의 제약 조건

Snowflake는 CREATE TABLE로 테이블의 복사본을 만드는 것을 지원해요.

  • 빈 복사본을 만들려면 CREATE TABLE … LIKE를 사용해요.
  • 클론을 만들려면 CREATE TABLE … CLONE을 사용해요.

또한 스키마나 데이터베이스를 클론하면 테이블 복사본이 자동으로 만들어져요.

테이블 복사본을 어떻게 만들든 원본 테이블의 제약 조건도 함께 복사돼요. 참조하는 테이블(foreign key 테이블)과 참조되는 테이블(primary key 테이블)이 있는 외래 키를 복사할 때 다음 시나리오가 발생할 수 있어요.

  • 두 테이블이 같은 명령에서 복사된다면(예: 스키마·데이터베이스 클론 시), 새 참조 테이블과 참조되는 테이블 사이에 새 외래 키가 생성돼요.
  • 참조하는 테이블만 복사된다면, 참조 테이블에 원래 primary key 테이블을 참조되는 테이블로 가리키는 새 외래 키가 생성돼요.
  • 참조되는 테이블만 복사된다면, primary 또는 unique 키는 복사되지만 새 외래 키는 생성되지 않아요.

따라서 참조하는 테이블과 참조되는 테이블을 따로 복사했다면, 새 외래 키를 직접 만들거나 새 외래 키의 primary key 테이블을 수동으로 변경해야 해요.

더 알아보기 (Learn more)