Aracılığıyla paylaş


ADD CONSTRAINT yan tümcesi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

Mevcut Delta Lake tablosuna, gerçekleştirilmiş görünüme veya akış tablosuna bilgi birincil anahtarı, bilgi yabancı anahtarı veya zorunlu denetim kısıtlaması ekler.

Sözdizimi

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_relation [ ( 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 }

Standart olmayan SQL diyalektleriyle uyumluluk için yerine ENABLE NOVALIDATEbelirtebilirsinizNOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

Parametreler

  • check_constraint

    İlişki için denetim kısıtlaması tanımlar.

    • CONSTRAINT ad

      Kısıtlama için bir ad belirtir. Ad, ilişki içinde benzersiz olmalıdır.

    • CHECK ( koşul)

      DEFAULT COLLATION İlişkinin, kısıtlama eklendiği sırada olması UTF8_BINARY gerekir.

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

      condition değişmez değerlerden, ilişki içindeki sütun tanımlayıcılarından ve aşağıdakiler dışında belirleyici, 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ğerini trueolarak değerlendirmesi gerekir.

      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.

    Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 11.3 LTS ve üzeri

    bir ilişki için bilgi amaçlı birincil anahtar veya bilgi amaçlı yabancı anahtar kısıtlaması tanımlar. Bilgi anahtarı kısıtlamaları uygulanmaz, ancak sorgu iyileştirmelerini destekleyerek performansı artırabilir.

    • CONSTRAINT ad

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

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

      Şunlar için geçerlidir:yalnızca Unity Kataloğu evet olarak işaretlenmiş onay kutusunu işaretleyin

      İlişkiye birincil anahtar kısıtlaması ekler. Bir ilişki en fazla bir birincil anahtara sahip olabilir.

      Birincil anahtar kısıtlamaları katalogdaki hive_metastore ilişkiler için desteklenmez.

    • key_column

      olarak NOT NULLtanımlanan konu ilişkisinin sütunu. Sütun adları tekrar edilmemelidir.

    • TIMESERIES

      Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 13.3 LTS ve üzeri

      İsteğe bağlı olarak birincil anahtar sütunu bileşenini zaman aralıklarını temsil eden olarak etiketler.

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

      Şunlar için geçerlidir:yalnızca Unity Kataloğu evet olarak işaretlenmiş onay kutusunu işaretleyin

      İlişkiye yabancı anahtar (bilgi tutarlılığı) kısıtlaması ekler.

      Katalogdaki hive_metastore ilişkiler için yabancı anahtar kısıtlamaları desteklenmez.

      • yabancı_anahtar_sütun

        Özne ilişkisine ait sütun. Sütun adları tekrar edilmemelidir. Her sütunun veri türü eşleşen parent_columntürüyle eşleşmelidir. Sütun sayısı, parent_columnssayısıyla eşleşmelidir. İki yabancı anahtar, aynı yabancı anahtar sütunları kümesini paylaşamaz.

      • parent_relation

        Yabancı anahtarın başvurduğu ilişkiyi belirtir. İlişki tanımlı bir PRIMARY KEY kısıtlamaya sahip olmalı ve ilişkide SELECT ayrıcalığınız olmalıdır.

      • parent_column

        Birincil anahtarının parçası olan ana ilişkideki bir sütun. Ebeveyn ilişkideki tüm birincil anahtar sütunları listelenmelidir.

        Ebeveyn sütunlar listelenmediyse, PRIMARY KEY tanımında verilen sıraya göre belirtildiği varsayılır.

      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 ima edilir. Her özellik en fazla bir kez belirtilebilir.

      • NOT ENFORCED

        Azure Databricks, mevcut veya yeni satırlar üzerinde herhangi bir zorlama yapmaz.

      • DEFERRABLE

        Kısıtlama uygulanması ertelenebilir.

      • INITIALLY DEFERRED

        Kısıtlama zorlaması ertelenmiştir.

      • NORELY veya RELY

        Şunlar için geçerlidir:onay işaretiyle evet Databricks SQL onay işaretiyle evet Kısıtlamalar için Databricks Runtime 14.2 ve üzeri

        Şunlar için geçerlidir:evet olarak işaretlenmiş, Databricks SQL check marked yes

        Eğer RELYvarsa, Azure Databricks sorguları yeniden yazmak için kısıtlamayı kullanabilir. Kısıtlamanın karşılandığından emin olmak kullanıcının sorumluluğundadır. Karşılanmamış bir kısıtlamaya güvenmek yanlış sorgu sonuçlarına neden olabilir.

        Varsayılan değer: NORELY.

    • 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 ima edilir. 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 NOT NULLolması gerekir.

      • ON UPDATE NO ACTION

        Üst PRIMARY KEY güncelleştirildiyse Azure Databricks 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 Azure Databricks 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

Azure Databricks birincil anahtar veya yabancı anahtar kısıtlamalarını zorlamaz. Birincil veya yabancı anahtar eklemeden önce anahtar kısıtlamalarını onaylayın. Alma işleminiz böyle bir güvence 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 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);