ADD CONSTRAINT yan tümcesi (Databricks SQL)

Önemli

Bu özellik Genel Önizlemededir.

Var olan bir Delta Lake tablosuna birincil anahtar, yabancı anahtar veya denetim kısıtlaması ekler.

Syntax

ADD [check_constraint | key_constraint ]

check_constraint
    CONSTRAINT name CHECK ( condition ) [ ENFORCED ]

key_constraint
    { [ CONSTRAINT name ]
      {
        PRIMARY KEY ( key_column [, ...] ) [ 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 }

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

Standart olmayan SQL diyalektleriyle uyumluluk için yerine NOT ENFORCED DEFERRABLE INITIALLY DEFERREDbelirtebilirsinizENABLE NOVALIDATE.

Parametreler

  • check_constraint

    Delta Lake tablosu için denetim kısıtlaması tanımlar.

    • CONSTRAINTAdı

      Kısıtlama için bir ad belirtir. Ad, tablo içinde benzersiz olmalıdır. Ad sağlanmazsa Databricks SQL bir ad oluşturur.

    • CHECK (Durum)

      condition BOOLEAN döndüren belirlenimci bir ifade olmalıdır.

      condition değişmez değerlerden, tablo içindeki sütun tanımlayıcılarından ve aşağıdakiler dışında belirlenici, yerleşik SQL işlevlerinden veya işleçlerinden oluşabilir:

      Ayrıca condition herhangi bir alt sorgu içermemelidir.

      Azure Databricks'te bir CHECK kısıtlamasının karşılanması için değerinin olarak değerlendirilmesi truegerekir.

      Delta Lake, hem yeni hem de mevcut verilerde denetim kısıtlamasının geçerliliğini doğrular. Mevcut satırlardan herhangi biri kısıtlamayı ihlal ederse bir hata oluşur.

  • key_constraint

    Önemli

    Bu özellik Genel Önizlemededir.

    Delta Lake tablosu için birincil anahtar veya yabancı anahtar kısıtlaması tanımlar.

    Gerekli:SQL ambarı sürüm 2022.30 veya üzeri. Bu sürüm Önizleme kanalında kullanılabilir.

    • CONSTRAINTAdı

      İsteğe bağlı olarak kısıtlama için bir ad belirtir. Adın şema içinde benzersiz olması gerekir. Ad sağlanmazsa Databricks SQL bir ad oluşturur.

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

      Delta Lake tablosuna birincil anahtar kısıtlaması ekler. Bir tabloda en fazla bir birincil anahtar olabilir.

      Birincil anahtar kısıtlamaları katalogdaki hive_metastore tablolar için desteklenmez.

    • key_column

      Konu tablosunun olarak NOT NULLtanımlanan sütunu. Sütun adları yinelenmemelidir.

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

      Delta Lake tablosuna yabancı anahtar (bilgi tutarlılığı) kısıtlaması ekler.

      Yabancı anahtar kısıtlamaları katalogdaki hive_metastore tablolar için desteklenmez.

      • foreign_key_column

        Konu tablosunun sütunu. Sütun adları yinelenmemelidir. Her sütunun veri türü eşleşen türüyle eşleşmelidir parent_column. Sütun sayısı, sayısıyla parent_columnseşleşmelidir. İki yabancı anahtar, aynı yabancı anahtar sütunları kümesini paylaşamaz.

      • parent_table

        Yabancı anahtarın başvurduğu tabloyu belirtir. Tablonun tanımlı PRIMARY KEY bir kısıtlaması olmalı ve bu tablonun sahibi olmanız gerekir.

      • parent_column

        Üst tablodaki birincil anahtarının parçası olan bir sütun. Üst tablonun tüm birincil anahtar sütunları listelenmelidir.

        Üst sütunlar listelenmiyorsa, tanımda PRIMARY KEY verilen sırayla belirtilmeleri gerekir.

      Yalnızca yabancı anahtar sütunlarının permütasyonunda farklılık gösteren yabancı anahtar kısıtlamalarına izin verilmez.

    • constraint_option

      Kısıtlamaların özelliklerini listeler. Tüm özellikler isteğe bağlıdır ancak varsayılan olarak örtülür. Her özellik en fazla bir kez belirtilebilir.

      • NOT ENFORCED

        Databricks SQL, var olan veya yeni satırlar için zorlamak için hiçbir işlem gerçekleştirmez.

      • DEFERRABLE

        Kısıtlama zorlaması ertelenebilir.

      • INITIALLY DEFERRED

        Kısıtlama zorlaması ertelenmiş.

      • NORELY

        Databricks SQL, sorguyu yeniden yazmak için kısıtlamadan yararlanmaz.

    • foreign_key_option

      Yabancı anahtar kısıtlamalarına özgü özellikleri listeler. Tüm özellikler isteğe bağlıdır ancak varsayılan olarak örtülür. Her özellik en fazla bir kez belirtilebilir.

      • MATCH FULL

        Kısıtlamanın doğru olarak kabul edilmesi için tüm sütun değerlerinin olması NOT NULLgerekir.

      • ON UPDATE NO ACTION

        Üst öğe PRIMARY KEY güncelleştirildiyse Databricks SQL, güncelleştirmeyi kısıtlamak veya yabancı anahtarı güncelleştirmek için hiçbir işlem gerçekleştirmez.

      • ON DELETE NO ACTION

        Üst satır silinirse Databricks SQL eylemi kısıtlamak, yabancı anahtarı güncelleştirmek veya bağımlı satırı silmek için hiçbir işlem gerçekleştirmez.

Önemli

Birincil veya yabancı anahtar eklemeden önce anahtar kısıtlamalarını onaylayın. Alma işleminiz bu güvenceyi sağlayabilir veya verileriniz üzerinde denetimler çalıştırabilirsiniz.

Örnekler

-- 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
> 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;

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