Aracılığıyla paylaş


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

CREATE TABLE veya CREATE MATERIALIZED VIEW deyiminin parçası olarak bir bilgilendirme birincil anahtarı veya bilgi yabancı anahtarı ekler.

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

Sözdizimi

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

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 ] [...]
       }
     }
   }

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

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 }

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

Parametreler

  • 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 Azure Databricks bir ad oluşturur.

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

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

    Tabloya veya gerçekleştirilmiş görünüme bir bilgilendirme birincil anahtar kısıtlaması ekler. Tablo veya gerçekleştirilmiş görünümde en fazla bir birincil anahtar olabilir.

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

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

    • key_column

      Konu tablosunun veya gerçekleştirilmiş görünümün sütunu. Sütun adları yinelenmemelidir.

    • 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

    PRIMARY KEY (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 olarak işaretlenmiş Yalnızca Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 11.3 LTS ve üzeri onay işareti evet olarak işaretlenmiş Unity Kataloğu

    Tabloya veya gerçekleştirilmiş görünüme bilgi yabancı anahtarı (bilgi tutarlılığı) kısıtlaması ekler.

    Yabancı anahtar kısıtlamaları katalogdaki hive_metastore 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.

    • foreign_key_column

      Konu tablosunun veya gerçekleştirilmiş görünümün 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ı s sayısıyla parent_columneşleşmelidir. İki yabancı anahtar, aynı yabancı anahtar sütunları kümesini paylaşamaz.

    • parent_table

      Yabancı anahtarın başvurduğu tabloyu veya gerçekleştirilmiş görünümü belirtir. Tablonun tanımlı PRIMARY KEY bir kısıtlaması olmalı ve tabloda ayrıcalığınız SELECT olmalıdır.

    • parent_column

      Birincil anahtarının parçası olan üst tablo 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ı listelenmelidir.

      Üst sütunlar listelenmiyorsa, tanımda PRIMARY KEY 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

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

  • 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

      Azure Databricks, 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 veya RELY

      Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Kısıtlamalar için PRIMARY KEY Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 14.2 ve üzeri

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

      ise RELY, Azure Databricks sorguları yeniden yazmak 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.

      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 ö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 PRIMARY KEY öğe 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 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

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