ADD CONSTRAINT klauzula

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Dodaje opisowy klucz podstawowy, opisowy klucz obcy lub wymuszone ograniczenie CHECK do istniejącej tabeli Delta Lake.

Składnia

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 }

Aby uzyskać zgodność z niestandardowymi dialektami SQL, można określić ENABLE NOVALIDATE zamiast NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

Parametry

  • check_constraint

    Definiuje ograniczenie kontrolne dla tabeli Delta Lake.

    • CONSTRAINT name

      Określa nazwę ograniczenia. Nazwa musi być unikatowa w tabeli.

    • CHECK ( warunek)

      DEFAULT COLLATION tabeli musi być UTF8_BINARY w momencie dodania ograniczenia.

      condition musi być wyrażeniem deterministycznym zwracającym BOOLEAN wartość.

      condition Może składać się z literałów, identyfikatorów kolumn w tabeli oraz deterministycznych, wbudowanych funkcji LUB operatorów SQL, z wyjątkiem:

      Ponadto condition nie może zawierać żadnego podzapytania.

      Aby ograniczenie zostało spełnione w usłudze Azure Databricks, musi zostać obliczone na CHECK.

      Delta Lake weryfikuje ważność warunku kontrolnego zarówno w odniesieniu do nowych, jak i istniejących danych. Jeśli jakikolwiek istniejący wiersz narusza ograniczenie, zostanie zgłoszony błąd.

  • key_constraint

    Ważne

    Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

    Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 11.3 LTS i nowsze

    Definiuje informacyjny klucz podstawowy lub informacyjne ograniczenie klucza obcego dla tabeli Delta Lake. Ograniczenia klucza informacyjnego nie są wymuszane, ale mogą zwiększyć wydajność, obsługując optymalizacje zapytań .

    • CONSTRAINT name

      Opcjonalnie określa nazwę ograniczenia. Nazwa musi być unikatowa w schemacie. Jeśli żadna nazwa nie zostanie podana, usługa Azure Databricks wygeneruje jedną nazwę.

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

      Dotyczy:zaznaczone jako tak tylko Unity Catalog

      Dodaje ograniczenie klucza podstawowego do tabeli Delta Lake. Tabela może mieć co najwyżej jeden klucz podstawowy.

      Ograniczenia klucza podstawowego nie są obsługiwane w przypadku tabel w wykazie hive_metastore .

    • key_column

      Kolumna tabeli tematu zdefiniowana jako NOT NULL. Nazwy kolumn nie mogą być powtarzane.

    • TIMESERIES

      Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 13.3 LTS i nowsze

      Opcjonalnie oznacza składnik kolumny klucza podstawowego jako reprezentujący szereg czasowy.

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

      Dotyczy:zaznaczone jako tak tylko Unity Catalog

      Dodaje ograniczenie klucza obcego (integralność referencyjna) do tabeli Delta Lake.

      Ograniczenia klucza obcego nie są obsługiwane w przypadku tabel w wykazie hive_metastore .

      • kolumna_klucza_obcego

        Kolumna tabeli tematu. Nazwy kolumn nie mogą być powtarzane. Typ danych każdej kolumny musi być zgodny z typem pasującego parent_columnelementu . Liczba kolumn musi być zgodna z liczbą parent_columns. Dwa klucze obce nie mogą współdzielić identycznego zestawu kolumn kluczy obcych.

      • parent_table

        Określa tabelę, do których odwołuje się klucz obcy. Tabela musi mieć zdefiniowane PRIMARY KEY ograniczenie, a Ty musisz posiadać SELECT uprawnienia do tabeli.

      • parent_column

        Kolumna w tabeli nadrzędnej, będąca częścią jej klucza podstawowego. Wszystkie kolumny klucza podstawowego tabeli nadrzędnej muszą być podane.

        Jeśli kolumny nadrzędne nie są wymienione, uważa się je za określone w kolejności podanej w definicji PRIMARY KEY.

      Ograniczenia klucza obcego, które różnią się tylko permutacją kolumn klucza obcego, są niedozwolone.

    • constraint_option

      Wyświetla listę właściwości ograniczeń. Wszystkie właściwości są opcjonalne, ale domyślnie implikowane. Każda właściwość może być określona co najwyżej raz.

      • NOT ENFORCED

        Usługa Azure Databricks nie wykonuje żadnych działań, aby to egzekwować dla istniejących lub nowych wierszy.

      • DEFERRABLE

        Wymuszanie ograniczenia można odroczyć.

      • INITIALLY DEFERRED

        Wymuszanie ograniczeń jest odroczone.

      • NORELY lub RELY

        Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 14.2 i nowsze w przypadku PRIMARY KEY ograniczeń

        Dotyczy:zaznaczone tak Databricks SQL zaznaczone tak Databricks Runtime 15.4 lub nowsze dla ograniczeń FOREIGN KEY

        Jeśli RELY, usługa Azure Databricks może wykorzystać ograniczenie do ponownego zapisywania zapytań. Użytkownik ponosi odpowiedzialność za zapewnienie, że ograniczenie jest spełnione. Poleganie na ograniczeniu, które nie jest spełnione, może prowadzić do nieprawidłowych wyników zapytania.

        Wartość domyślna to NORELY.

    • foreign_key_option

      Wyświetla listę właściwości specyficznych dla ograniczeń klucza obcego. Wszystkie właściwości są opcjonalne, ale domyślnie implikowane. Każda właściwość może być określona co najwyżej raz.

      • MATCH FULL

        Aby ograniczenie było uznawane za prawdziwe, wszystkie wartości kolumn muszą mieć wartość NOT NULL.

      • ON UPDATE NO ACTION

        Jeśli element nadrzędny PRIMARY KEY jest aktualizowany, usługa Azure Databricks nie podejmuje żadnych działań w celu ograniczenia aktualizacji lub aktualizacji klucza obcego.

      • ON DELETE NO ACTION

        Jeśli wiersz nadrzędny zostanie usunięty, Azure Databricks nie podejmuje żadnych działań, aby ograniczyć tę operację, zaktualizować klucz obcy ani usunąć wiersza zależnego.

Ważne

Usługa Azure Databricks nie wymusza ograniczeń klucza podstawowego ani klucza obcego. Przed dodaniem klucza podstawowego lub obcego potwierdź ograniczenia klucza. Twój proces pozyskiwania danych może zapewnić taką pewność, lub można przeprowadzić kontrole względem danych.

Przykłady

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