제약 조건 속성

제약 조건 속성은 CREATE TABLE 또는 ALTER TABLE 명령의 CONSTRAINT 절에 지정됩니다.

이 항목의 내용:

ANSI SQL 제약 조건 속성

모든 제약 조건의 속성

ANSI SQL 표준의 다음 제약 조건 속성은 모든 제약 조건(고유 키, 기본 키, 외래 키)에 적용됩니다.

ENFORCED | NOT ENFORCED

트랜잭션에서 제약 조건을 강제 적용할지 여부를 지정합니다. NOT NULL 은 Snowflake에서 강제 적용하는 유일한 제약 조건입니다. 참조 무결성 제약 조건 섹션을 참조하십시오.

DEFERRABLE | NOT DEFERRABLE

후속 트랜잭션에서 트랜잭션이 끝날 때까지 제약 조건 검사를 연기할 수 있을지 여부를 지정합니다.

INITIALLY { DEFERRED | IMMEDIATE }

DEFERRABLE 제약 조건의 경우 제약 조건 검사가 다음 트랜잭션부터 연기되는지 여부를 지정합니다.

표준 제약 조건 속성의 기본값은 다음과 같습니다.

NOT ENFORCED DEFERRABLE INITIALLY DEFERRED

외래 키 제약 조건의 속성 전용

다음 제약 조건 속성도 ANSI SQL 표준에서 온 것이지만, 외래 키에만 적용됩니다.

MATCH { FULL | PARTIAL | SIMPLE }

하나 이상의 열에 있는 NULL 값에 관해 외래 키가 충족되는지 여부를 지정합니다.

UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION }

외래 키의 기본/고유 키가 업데이트될 때 수행되는 작업을 지정합니다.

DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION }

외래 키의 기본/고유 키가 삭제될 때 수행되는 작업을 지정합니다.

외래 키 제약 조건 속성의 기본값은 다음과 같습니다.

MATCH FULL UPDATE NO ACTION DELETE NO ACTION

확장된 제약 조건 속성

다음 속성은 ANSI SQL 표준에 속하지 않지만, 다른 데이터베이스와의 호환성을 위해 지원됩니다. 이들 속성은 모든 제약 조건(고유 키, 기본 키, 외래 키)에 적용됩니다.

ENABLE | DISABLE

제약 조건을 사용할지, 사용하지 않을지 지정합니다. 이러한 속성은 Oracle과의 호환성을 위해 제공됩니다.

기본적으로 이 제약 조건 속성은 DISABLE로 설정됩니다.

VALIDATE | NOVALIDATE

제약 조건을 만들 때 테이블에 있는 기존 데이터의 유효성을 검사할지 여부를 지정합니다. ENABLE | DISABLE 속성과만 함께 사용됩니다.

기본적으로 이 제약 조건 속성은 NOVALIDATE로 설정됩니다.

RELY | NORELY

쿼리 재작성 중에 NOVALIDATE 모드의 제약 조건을 고려할지 여부를 지정합니다.

기본적으로 이 제약 조건 속성은 NORELY로 설정됩니다.

테이블의 데이터가 제약 조건을 준수하는지 확인한 경우 이를 RELY로 변경하여, 쿼리 최적화 프로그램이 테이블의 데이터가 제약 조건을 준수할 것으로 예상해야 함을 나타낼 수 있습니다. 이를 설정하면 쿼리 성능이 향상될 수 있습니다(예: 불필요한 조인을 제거 함으로써).

기본 및 외래 키 제약 조건의 경우, 기본 키 제약 조건과 외래 키 제약 조건 둘 다에 대해 이 속성을 설정합니다. 예:

ALTER TABLE table_with_primary_key ALTER CONSTRAINT a_primary_key_constraint RELY;
ALTER TABLE table_with_foreign_key ALTER CONSTRAINT a_foreign_key_constraint RELY;
Copy

ENABLE 및 VALIDATE 제약 조건 속성에 대한 기본값 이외 값

다른 데이터베이스와의 구문 호환성을 위해 Snowflake는 제약 조건 속성에 기본값 이외의 값을 지정하는 것을 지원합니다.

그러나 새 제약 조건을 만들 때 ENABLE 또는 VALIDATE (이러한 속성에 대한 기본값 이외 값)를 지정하면 제약 조건이 만들어지지 않습니다. 이것은 RELY 에 적용되지 않습니다. RELY 를 지정하면 새 제약 조건이 만들어집니다.

Snowflake는 제약 조건 생성 중에 기본값이 아닌 값을 지정하면 오류를 생성할지 여부를 지정하는 세션 매개 변수 UNSUPPORTED_DDL_ACTION 을 제공합니다.