ADD CONSTRAINT, klauzula

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

Dodaje informacyjny klucz podstawowy, informacyjny klucz obcy lub wymuszone ograniczenie sprawdzania do istniejącej tabeli usługi 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 sprawdzania dla tabeli usługi Delta Lake.

    • CONSTRAINTname

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

    • CHECK (Warunek)

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

      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.

      CHECK Aby ograniczenie było zadowalające w usłudze Azure Databricks, musi zostać obliczone na truewartość .

      Usługa Delta Lake weryfikuje ważność ograniczenia sprawdzania zarówno względem 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 usługi Delta Lake.

    • CONSTRAINTname

      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:zaznacz pole wyboru oznaczone jako tak tylko wykaz aparatu Unity

      Dodaje ograniczenie klucza podstawowego do tabeli usługi 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 podmiotu 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 czasowniki.

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

      Dotyczy:zaznacz pole wyboru oznaczone jako tak tylko wykaz aparatu Unity

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

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

      • foreign_key_column

        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 i musisz być właścicielem tej tabeli.

      • parent_column

        Kolumna w tabeli nadrzędnej, która jest częścią klucza podstawowego. Wszystkie kolumny klucza podstawowego tabeli nadrzędnej muszą być wymienione.

        Jeśli kolumny nadrzędne nie są wymienione na liście, mają być określone w kolejności podanej PRIMARY KEY w definicji.

      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 podejmuje żadnych działań w celu wymuszenia jej 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

        Jeśli RELYusł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 w usłudze Azure Databricks, nie podejmuje żadnych działań w celu ograniczenia aktualizacji lub zaktualizowania klucza obcego.

      • ON DELETE NO ACTION

        Jeśli wiersz nadrzędny zostanie usunięty w usłudze Azure Databricks, nie podejmuje żadnych działań w celu ograniczenia akcji, zaktualizowania klucza obcego lub usunięcia 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. Proces pozyskiwania może zapewnić taką pewność lub można uruchomić 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);