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

Bir veya CREATE MATERIALIZED VIEW deyiminin CREATE TABLE parçası olarak bir bilgilendirme birincil anahtarı, bilgilendiren yabancı anahtar veya bilgi benzersiz kısıtlaması ekler.

Delta Lake tablosuna denetim kısıtlaması eklemek için tablo oluşturulduktan sonra ALTER TABLE kullanın.

Sözdizimi

Birden çok sütuna yayılan kısıtlamaları tanımlamak veya söz dizimini sütun tanımından ayırmak için table_constraint yan tümcesini kullanın.

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

Tek bir sütun tanımına özgü kısıtlamaları tanımlamak için column_constraintyan tümcesini kullanın.

column_constraint
  { [ CONSTRAINT name ]
    { PRIMARY KEY [ constraint_option ] [...] |
      UNIQUE [ 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 }

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

Parametreler

  • CONSTRAINT ad

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

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

    Şunlar için geçerlidir:onay işareti evet Databricks SQL onay işareti evet olarak işaretlendi Databricks Runtime 11.3 LTS ve üzeri onay işareti yalnızca Unity Kataloğu evet olarak işaretlendi

    Tabloya veya gerçekleştirilmiş görünüme bilgilendirici birincil anahtar kısıtlaması ekler. Tablo veya malzemeleşmiş görünüm en fazla bir birincil anahtara sahip olabilir.

    Birincil anahtar sütunları örtük olarak NOT NULLolarak tanımlanır.

    birincil anahtar kısıtlamaları hive_metastore kataloğundaki tablolar için desteklenmez.

    • key_column

      Konu tablosu veya gerçekleştirilmiş görünümün bir sütunu. Sütun adları tekrarlanmamalıdır.

    • 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.

  • PRIMARY KEY [ constraint_option ] [...]

    Yukarıdaki anahtar sütun tanımını kullanarak tabloya veya gerçekleştirilmiş görünüme tek sütunlu birincil anahtar kısıtlaması ekler.

    Bu column_constraint , table_constraint'e eşdeğerdir.

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

  • UNIQUE ( key_column [, ...] ) [ constraint_option [...] ]

    Şunun için geçerlidir:evet olarak işaretlendi Databricks SQL denetimi evet olarak işaretlendi Databricks Runtime 18.2 ve üzeri denetim evet yalnızca Unity Kataloğu olarak işaretlendi

    Tabloya bilgilendiren benzersiz bir kısıtlama ekler. Bir tablonun birden çok benzersiz kısıtlaması olabilir.

    Katalogdaki hive_metastore tablolar için benzersiz kısıtlamalar desteklenmez.

    Kısıtlamadaki UNIQUE sütunlar, kısıtlamaya yabancı bir anahtar tarafından başvurulduğunda da dahil olmak üzere null atanabilir. NULL sütunlarındaki UNIQUE değerler birbirinden ayrı olarak değerlendirilir, bu nedenle yinelenen NULL değerler kısıtlamanın UNIQUE semantiğini ihlal etmiyor.

    • key_column

      Konu tablosunun sütunu. Sütun adları tekrarlanmamalıdır.

  • UNIQUE [ constraint_option ] [...]

    Yukarıdaki anahtar sütun tanımını kullanarak tabloya tek bir sütun benzersiz kısıtlaması ekler.

    Bu column_constraint , table_constraint'e eşdeğerdir.

    UNIQUE (key_column) [ constraint_option ] [...]

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

    Şunlar için geçerlidir:onay işareti evet Databricks SQL onay işareti evet olarak işaretlendi Databricks Runtime 11.3 LTS ve üzeri onay işareti yalnızca Unity Kataloğu evet olarak işaretlendi

    Tabloya veya gerçekleştirilmiş görünüme bilgilendirme amaçlı yabancı anahtar (başvurusal bütünlük) kısıtlaması ekler.

    yabancı anahtar kısıtlamaları hive_metastore kataloğundaki tablolar için desteklenmez.

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

    • yabancı_anahtar_sütun

      Konu tablosu veya gerçekleştirilmiş görünümün bir sütunu. Sütun adları tekrarlanmamalıdır. Her sütunun veri türü eşleşen parent_columntürüyle eşleşmelidir. Sütun sayısı, parent_columnsayısıyla eşleşmelidir. İki yabancı anahtar, aynı yabancı anahtar sütunları kümesini paylaşamaz.

    • parent_table

      Yabancı anahtarın başvurduğu tabloyu veya materyalize edilmiş görünümü belirtir. Tablonun tanımlı PRIMARY KEY bir kısıtlaması veya Databricks Runtime 18.2 ve sonraki sürümleri için tanımlı UNIQUE bir kısıtlamaya sahip SELECT olması ve tabloda ayrıcalığınız olması gerekir.

    • parent_column

      Birincil anahtarının parçası olan veya Databricks Runtime 18.2 ve sonraki sürümlerin benzersiz bir kısıtlamanın parçası olan üst tablodaki veya gerçekleştirilmiş görünümdeki bir sütun. Üst tablonun veya gerçekleştirilmiş görünümün tüm birincil anahtar sütunları veya benzersiz kısıtlama sütunları listelenmelidir.

      Üst sütunlar listelenmiyorsa, PRIMARY KEY tanımında verilen sırayla belirtilir.

    • FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

      Yukarıdaki yabancı anahtar sütun tanımını kullanarak tabloya veya gerçekleştirilmiş görünüme tek sütunlu yabancı anahtar kısıtlaması ekler.

      Bu column_constraint , table_constraint'e eşdeğerdir.

      FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

  • kısıtlama_seçeneği

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

    • NOT ENFORCED

      Azure Databricks, mevcut veya yeni satırlarda uygulamak için herhangi bir işlem yapmaz.

    • DEFERRABLE

      Kısıtlama zorlaması ertelenebilir.

    • INITIALLY DEFERRED

      Kısıtlama zorlaması ertelendi.

    • NORELY veya RELY

      Şunlar için geçerlidir:evet olarak işaretlenmiş Databricks SQL evet olarak işaretlenmiş Databricks Runtime 14.2 ve üzeri için kısıtlamalar

      Şunlar için geçerlidir:evet olarak işaretlenmiş Databricks SQL evet olarak işaretlenmişFOREIGN KEY kısıtlamaları için Databricks Runtime 15.4 ve üzeri

      Şunun için geçerlidir:evet olarak işaretlendi Databricks SQL denetimi kısıtlamaları için UNIQUE evet Databricks Runtime 18.2 ve üzeri olarak işaretlendi

      ise RELY, Azure Databricks sorguları yeniden yazmak ve iyileştirmek için kısıtlamadan yararlanabilir. 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. Komutla RELY ilişkili sorgu iyileştirmeleri, sorguların Photon özellikli işlemde çalıştırılmasını gerektirir. Bkz . Photon nedir?.

      Varsayılan değer: NORELY.

  • foreign_key_option (yabancı_anahtar_seçeneği)

    Yabancı anahtar kısıtlamalarına özgü özellikleri listeler. Tüm özellikler isteğe bağlıdır ancak varsayılan olarak kabul 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ştirilirse, 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, yabancı anahtar veya benzersiz kısıtlamaları zorunlu kılmaz. Birincil anahtar, yabancı anahtar veya benzersiz kısıtlama 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

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

-- Create a table with a column unique constraint
> CREATE TABLE person_contacts(first_name STRING NOT NULL, last_name STRING NOT NULL,
                               nickname STRING UNIQUE);

-- Create a table with a multi-column unique constraint
> CREATE TABLE person_accounts(first_name STRING NOT NULL, last_name STRING NOT NULL, account_id STRING,
                               CONSTRAINT person_accounts_uq UNIQUE(first_name, last_name));

-- Create a table with a foreign key that references a unique column
> CREATE TABLE pet_tags(tag STRING NOT NULL, owner_nickname STRING,
                        CONSTRAINT pet_tags_owner_fk FOREIGN KEY (owner_nickname) REFERENCES person_contacts(nickname));