다음을 통해 공유


ADD CONSTRAINT 절

적용 대상: 예(예)로 표시된 확인 Databricks SQL 예(예)로 표시된 확인 Databricks 런타임

정보 기본 키, 정보 외부 키 또는 강제 검사 제약 조건을 기존 Delta Lake 테이블에 추가합니다.

구문

ADD [check_constraint | key_constraint ]

check_constraint
    CONSTRAINT name CHECK ( condition ) [ ENFORCED ]

key_constraint
    { [ CONSTRAINT name ]
      {
        PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
        { FOREIGN KEY (foreign_key_column [, ...] )
          REFERENCES parent_table [ ( parent_column [, ...] ] )
          [ constraint_option | foreign_key_option ] [...]
      }
    }

constraint_option
    { NOT ENFORCED |
      DEFERRABLE |
      INITIALLY DEFERRED |
      { NORELY | RELY } }

foreign_key_option
    { MATCH FULL |
      ON UPDATE NO ACTION |
      ON DELETE NO ACTION }

비표준 SQL 언어와의 호환성을 위해 NOT ENFORCED DEFERRABLE INITIALLY DEFERRED 대신 ENABLE NOVALIDATE를 지정할 수 있습니다.

매개 변수

  • check_constraint

    Delta Lake 테이블에 대한 검사 제약 조건을 정의합니다.

    • CONSTRAINT이름

      제약 조건의 이름을 지정합니다. 이름은 테이블 내에서 고유해야 합니다. 이름이 제공되지 않으면 Azure Databricks에서 이름이 생성됩니다.

    • CHECK (condition)

      condition 는 을 반환하는 결정적 식이어야 BOOLEAN합니다.

      condition은 다음을 제외하고 리터럴, 테이블 내의 열 식별자 및 결정적 기본 제공 SQL 함수 또는 연산자로 구성될 수 있습니다.

      또한 condition에는 하위 쿼리가 포함되어서는 안 됩니다.

      CHECK Azure Databricks에서 제약 조건을 충족하려면 다음으로 true평가해야 합니다.

      Delta Lake는 새 데이터와 기존 데이터에 대한 검사 제약 조건의 유효성을 확인했습니다. 기존 행이 제약 조건을 위반하는 경우 오류가 발생합니다.

  • key_constraint

    Important

    이 기능은 공개 미리 보기 상태입니다.

    적용 대상: 예(예)로 표시된 확인 Databricks SQL 예(예)로 표시된 확인 Databricks Runtime 11.3 LTS 이상

    Delta Lake 테이블에 대한 정보 기본 키 또는 정보 외래 키 제약 조건을 정의합니다.

    • CONSTRAINT이름

      필요에 따라 제약 조건의 이름을 지정합니다. 이름은 스키마 내에서 고유해야 합니다. 이름이 제공되지 않으면 Azure Databricks에서 이름이 생성됩니다.

    • PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]

      적용 대상: 예(예)로 표시된 확인 Unity 카탈로그만

      Delta Lake 테이블에 기본 키 제약 조건을 추가합니다. 테이블은 최대 하나의 기본 키를 가질 수 있습니다.

      hive_metastore 카탈로그의 테이블에는 기본 키 제약 조건이 지원되지 않습니다.

    • key_column

      NOT NULL로 정의된 제목 테이블의 열입니다. 열 이름은 반복해서는 안 됩니다.

    • TIMESERIES

      적용 대상: 예(예)로 표시된 확인 Databricks SQL 예(예)로 표시된 확인 Databricks Runtime 13.3 LTS 이상

      필요에 따라 기본 키 열 구성 요소에 시간 표시로 레이블을 지정합니다.

    • FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option

      적용 대상: 예(예)로 표시된 확인 Unity 카탈로그만

      외래 키(참조 무결성) 제약 조건을 Delta Lake 테이블에 추가합니다.

      hive_metastore 카탈로그의 테이블에는 외래 키 제약 조건이 지원되지 않습니다.

      • foreign_key_column

        제목 테이블의 열입니다. 열 이름은 반복해서는 안 됩니다. 각 열의 데이터 형식은 일치하는 parent_column의 형식과 일치해야 합니다. 열의 수는 parent_columns의 수와 일치해야 합니다. 두 개의 외래 키는 동일한 외래 키 열 세트를 공유할 수 없습니다.

      • parent_table

        외래 키가 참조하는 테이블을 지정합니다. 테이블에 정의된 PRIMARY KEY 제약 조건이 있어야 하며 테이블에 대한 권한이 있어야 합니다 SELECT .

      • parent_column

        기본 키의 일부인 부모 테이블의 열입니다. 부모 테이블의 모든 기본 키 열이 나열되어야 합니다.

        부모 열이 나열되지 않으면 PRIMARY KEY 정의에 지정된 순서대로 지정되는 것으로 암시됩니다.

      외래 키 열의 순열만 다른 외래 키 제약 조건은 허용되지 않습니다.

    • constraint_option

      제약 조건의 속성을 나열합니다. 모든 속성은 선택 사항이지만 기본적으로 암시됩니다. 각 속성은 최대 한 번 지정할 수 있습니다.

      • NOT ENFORCED

        Azure Databricks는 기존 행 또는 새 행에 적용하는 작업을 수행하지 않습니다.

      • DEFERRABLE

        제약 조건 적용을 연기할 수 있습니다.

      • INITIALLY DEFERRED

        제약 조건 적용이 지연됩니다.

      • NORELY 또는 RELY

        적용 대상: 예(예)로 표시된 확인 Databricks SQL 예(예)로 표시된 확인 Databricks Runtime 14.2 이상

        이 경우 RELYAzure 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는 기본 키 또는 외래 키 제약 조건을 적용하지 않습니다. 기본 또는 외래 키를 추가하기 전에 키 제약 조건을 확인합니다. 수집 프로세스는 이러한 보증을 제공하거나 데이터에 대한 검사를 실행할 수 있습니다.

예제

-- Add a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING);
> ALTER TABLE persons ADD CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name);

-- Add a foreign key which Databricks does not enforce, but can rely upon.
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING);
> ALTER TABLE pets ADD CONSTRAINT pets_persons_fk
    FOREIGN KEY(owner_first_name, owner_last_name) REFERENCES persons
    NOT ENFORCED RELY;

-- Add a check contraint
> ALTER TABLE pets ADD CONSTRAINT pets_name_not_cute_chk CHECK (length(name) < 20);