CONSTRAINT 절
적용 대상: Databricks SQL Databricks Runtime
CREATE TABLE 또는 CREATE MATERIALIZED VIEW 문의 일부로 정보 기본 키 또는 정보 외래 키를 추가합니다.
Delta Lake 테이블에 검사약 조건을 추가하려면 테이블을 만든 후 ALTER TABLE을 사용합니다.
구문
table_constraint
절을 사용하여 여러 열에 걸쳐 있는 제약 조건을 정의하거나 구문을 열 정의와 분리합니다.
table_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY ( foreign_key_column [, ...] )
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
column_constraint
절을 사용하여 단일 열 정의와 관련된 제약 조건을 정의합니다.
column_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY [ constraint_option ] [...] |
{ [ FOREIGN KEY ]
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
constraint_option
{ NOT ENFORCED |
DEFERRABLE |
INITIALLY DEFERRED |
{ RELY | NORELY } }
foreign_key_option
{ MATCH FULL |
ON UPDATE NO ACTION |
ON DELETE NO ACTION }
비표준 SQL 언어와의 호환성을 위해 NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
대신 ENABLE NOVALIDATE
를 지정할 수 있습니다.
매개 변수
CONSTRAINT
이름필요에 따라 제약 조건의 이름을 지정합니다. 이름은 스키마 내에서 고유해야 합니다. 이름이 제공되지 않으면 Azure Databricks에서 이름이 생성됩니다.
PRIMARY KEY
( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]적용 대상: Databricks SQL Databricks Runtime 11.3 LTS 이상 Unity 카탈로그만
테이블 또는 구체화된 뷰에 정보 기본 키 제약 조건을 추가합니다. 테이블 또는 구체화된 뷰에는 최대 하나의 기본 키가 있을 수 있습니다.
기본 키 열은 암시적으로
NOT NULL
로 정의됩니다.hive_metastore
카탈로그의 테이블에는 기본 키 제약 조건이 지원되지 않습니다.-
제목 테이블 또는 구체화된 뷰의 열입니다. 열 이름은 반복해서는 안 됩니다.
TIMESERIES
적용 대상: Databricks SQL Databricks Runtime 13.3 LTS 이상
필요에 따라 기본 키 열 구성 요소에 시간 표시로 레이블을 지정합니다.
-
PRIMARY KEY [ constraint_option ] [...]
앞의 키 열 정의를 사용하여 테이블 또는 구체화된 뷰에 단일 열 기본 키 제약 조건을 추가합니다.
이
column_constraint
는table_constraint
와 동일합니다.PRIMARY KEY (key_column) [ constraint_option ] [...]
FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
적용 대상: Databricks SQL Databricks Runtime 11.3 LTS 이상 Unity 카탈로그만
정보 외래 키(참조 무결성) 제약 조건을 테이블 또는 구체화된 뷰에 추가합니다.
hive_metastore
카탈로그의 테이블에는 외래 키 제약 조건이 지원되지 않습니다.외래 키 열의 순열만 다른 외래 키 제약 조건은 허용되지 않습니다.
-
제목 테이블 또는 구체화된 뷰의 열입니다. 열 이름은 반복해서는 안 됩니다. 각 열의 데이터 형식은 일치하는
parent_column
의 형식과 일치해야 합니다. 열의 수는parent_column
의 수와 일치해야 합니다. 두 개의 외래 키는 동일한 외래 키 열 세트를 공유할 수 없습니다. -
외래 키가 참조하는 테이블 또는 구체화된 뷰를 지정합니다. 테이블에 정의된
PRIMARY KEY
제약 조건이 있어야 하며 테이블에 대한 권한이 있어야 합니다SELECT
. -
기본 키의 일부인 부모 테이블 또는 구체화된 뷰의 열입니다. 부모 테이블 또는 구체화된 뷰의 모든 기본 키 열이 나열되어야 합니다.
부모 열이 나열되지 않으면
PRIMARY KEY
정의에 지정된 순서로 지정됩니다. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
앞의 외래 키 열 정의를 사용하여 테이블 또는 구체화된 뷰에 단일 열 외래 키 제약 조건을 추가합니다.
이
column_constraint
는table_constraint
와 동일합니다.FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
-
constraint_option
제약 조건의 속성을 나열합니다. 모든 속성은 선택 사항이지만 기본적으로 암시됩니다. 각 속성은 최대 한 번 지정할 수 있습니다.
NOT ENFORCED
Azure Databricks는 기존 행 또는 새 행에 적용하는 작업을 수행하지 않습니다.
DEFERRABLE
제약 조건 적용을 연기할 수 있습니다.
INITIALLY DEFERRED
제약 조건 적용이 지연됩니다.
NORELY
또는RELY
적용 대상: 제약 조건에 대한
PRIMARY KEY
Databricks SQL Databricks Runtime 14.2 이상적용 대상: 제약 조건에 대한
FOREIGN KEY
Databricks Runtime 15.4 이상이 경우
RELY
Azure Databricks가 제약 조건을 악용하여 쿼리를 다시 작성할 수 있습니다. 제약 조건이 충족되는지 확인하는 것은 사용자의 책임입니다. 충족되지 않는 제약 조건에 의존하면 잘못된 쿼리 결과가 발생할 수 있습니다.기본값은
NORELY
입니다.
foreign_key_option
외래 키 제약 조건과 관련된 속성을 나열합니다. 모든 속성은 선택 사항이지만 기본적으로 암시됩니다. 각 속성은 최대 한 번 지정할 수 있습니다.
MATCH FULL
제약 조건을 true로 간주하려면 모든 열 값이
NOT NULL
이어야 합니다.ON UPDATE NO ACTION
부모
PRIMARY KEY
가 업데이트되면 Azure Databricks는 업데이트를 제한하거나 외래 키를 업데이트하는 작업을 수행하지 않습니다.ON DELETE NO ACTION
부모 행이 삭제되면 Azure Databricks는 작업을 제한하거나, 외래 키를 업데이트하거나, 종속 행을 삭제하는 작업을 수행하지 않습니다.
Important
Azure Databricks는 기본 키 또는 외래 키 제약 조건을 적용하지 않습니다. 기본 또는 외래 키를 추가하기 전에 키 제약 조건을 확인합니다. 수집 프로세스는 이러한 보증을 제공하거나 데이터에 대한 검사를 실행할 수 있습니다.
예제
-- Create a table with a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING,
CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name));
-- create a table with a foreign key
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING,
CONSTRAINT pets_persons_fk FOREIGN KEY (owner_first_name, owner_last_name) REFERENCES persons);
-- Create a table with a single column primary key and system generated name
> CREATE TABLE customers(customerid STRING NOT NULL PRIMARY KEY, name STRING);
-- Create a table with a names single column primary key and a named single column foreign key
> CREATE TABLE orders(orderid BIGINT NOT NULL CONSTRAINT orders_pk PRIMARY KEY,
customerid STRING CONSTRAINT orders_customers_fk REFERENCES customers);