CONSTRAINT, klauzula

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

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

Dodaje informacyjny klucz podstawowy lub informacyjny klucz obcy w ramach instrukcji CREATE TABLE lub CREATE MATERIALIZED VIEW .

Aby dodać ograniczenie sprawdzania do tabeli usługi Delta Lake, użyj polecenia ALTER TABLE po utworzeniu tabeli.

Składnia

Użyj klauzuli table_constraint , aby zdefiniować ograniczenia obejmujące wiele kolumn lub oddzielić składnię od definicji kolumny.

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

Użyj klauzuli column_constraint, aby zdefiniować ograniczenia specyficzne dla definicji pojedynczej kolumny.

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 |
      NORELY }

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

  • Nazwa ograniczenia

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

  • KLUCZ PODSTAWOWY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]

    Dotyczy:zaznacz pole wyboru oznaczone jako tak Tylko katalog aparatu Unity usługi Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 11.3 LTS i nowszy zaznacz pole wyboru oznaczone jako tak

    Dodaje ograniczenie klucza podstawowego informacyjnego do tabeli lub zmaterializowanego widoku. Tabela lub zmaterializowany widok może mieć co najwyżej jeden klucz podstawowy.

    Kolumny klucza podstawowego są niejawnie zdefiniowane jako NOT NULL.

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

    • key_column

      Kolumna tabeli tematu lub zmaterializowany widok. 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.

  • PRIMARY KEY [ constraint_option ] [...]

    Dodaje ograniczenie klucza podstawowego z jedną kolumną do tabeli lub zmaterializowanego widoku przy użyciu powyższej definicji kolumny klucza.

    Jest to column_constraint równoważne table_constraint

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

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

    Dotyczy:zaznacz pole wyboru oznaczone jako tak Tylko katalog aparatu Unity usługi Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 11.3 LTS i nowszy zaznacz pole wyboru oznaczone jako tak

    Dodaje ograniczenie klucza obcego informacyjnego (więzów integralności) do tabeli lub zmaterializowanego widoku.

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

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

    • foreign_key_column

      Kolumna tabeli tematu lub zmaterializowany widok. 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 parent_columnliczbą s. Dwa klucze obce nie mogą współdzielić identycznego zestawu kolumn kluczy obcych.

    • parent_table

      Określa tabelę lub zmaterializowany widok, do których odwołuje się klucz obcy. Tabela musi mieć zdefiniowane PRIMARY KEY ograniczenie i musisz być właścicielem tej tabeli lub zmaterializowanego widoku.

    • parent_column

      Kolumna w tabeli nadrzędnej lub zmaterializowany widok, który jest częścią klucza podstawowego. Wszystkie kolumny klucza podstawowego tabeli nadrzędnej lub zmaterializowanego widoku muszą być wymienione.

      Jeśli kolumny nadrzędne nie są wyświetlane, są określone przez kolejność podaną PRIMARY KEY w definicji.

    • FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

      Dodaje ograniczenie klucza obcego z jedną kolumną do tabeli lub zmaterializowanego widoku przy użyciu powyższej definicji kolumny klucza obcego.

      Jest to column_constraint równoważne table_constraint

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

  • 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

      Usługa Azure Databricks nie wykorzystuje ograniczenia w celu ponownego zapisania zapytania.

  • 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 zostanie zaktualizowany, usługa Azure Databricks nie podejmuje żadnych działań w celu ograniczenia aktualizacji ani zaktualizowania klucza obcego.

    • ON DELETE NO ACTION

      Jeśli wiersz nadrzędny zostanie usunięty, usługa 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

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