Поделиться через


Предложение CONSTRAINT

Область применения:проверка помечены да Databricks SQL проверка помечены да Databricks Runtime

Добавляет информационный первичный ключ или информационный внешний ключ в рамках инструкции CREATE TABLE или CREATE MATERIALIZED VIEW .

Чтобы добавить ограничение проверки в таблицу Delta Lake, используйте инструкцию ALTER TABLE после создания таблицы.

Синтаксис

Воспользуйтесь предложением table_constraint, чтобы определить ограничения, охватывающие несколько столбцов или отделяющие синтаксис от определения столбца.

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

Воспользуйтесь предложением column_constraint, чтобы определить ограничения, относящиеся к определению отдельного столбца.

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 }

Для совместимости с нестандартными диалектами SQL можно указать ENABLE NOVALIDATE вместо NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

Параметры

  • CONSTRAINT имя

    При необходимости указывает имя ограничения. Имя должно быть уникальным в пределах схемы. Если имя не указано, Azure Databricks создаст его.

  • ПЕРВИЧНЫЙ КЛЮЧ ( key_column [ TIMESERIES] [, ...] ) [ constraint_option [...] ]

    Область применения:проверка помечены да Databricks SQL проверка помечены да Databricks Runtime 11.3 LTS и более поздней проверка помечены да версии каталога Unity

    Добавляет информационное ограничение первичного ключа в таблицу или материализованное представление. Таблица или материализованное представление может иметь не более одного первичного ключа.

    Столбцы первичного ключа неявно определяются как NOT NULL.

    Ограничения первичного ключа не поддерживаются для таблиц в каталоге hive_metastore.

    • столбец_ключа

      Столбец таблицы темы или материализованного представления. Имена столбцов не должны повторяться.

    • TIMESERIES

      Область применения:проверка помечены да Databricks SQL проверка помечены да Databricks Runtime 13.3 LTS и выше

      При необходимости метка компонента первичного ключевого столбца как представляющая таймерии.

  • PRIMARY KEY [ constraint_option ] [...]

    Добавляет ограничение первичного ключа одного столбца в таблицу или материализованное представление, используя предыдущее определение ключевого столбца.

    Этот column_constraint равносилен table_constraint.

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

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

    Область применения:проверка помечены да Databricks SQL проверка помечены да Databricks Runtime 11.3 LTS и более поздней проверка помечены да версии каталога Unity

    Добавляет информационное ограничение внешнего ключа (целостность ссылок) в таблицу или материализованное представление.

    Ограничения внешнего ключа не поддерживаются для таблиц в каталоге hive_metastore.

    Ограничения внешнего ключа, которые различаются только в перестановке столбцов внешнего ключа, запрещены.

    • столбец_внешнего_ключа

      Столбец таблицы темы или материализованного представления. Имена столбцов не должны повторяться. Тип данных каждого столбца должен совпадать с типом соответствующего parent_column. Число столбцов должно совпадать с числом столбцов parent_column. Два внешних ключа не могут совместно использовать идентичный набор столбцов внешнего ключа.

    • родительская_таблица

      Указывает таблицу или материализованное представление, на которое ссылается внешний ключ. Таблица должна иметь определенное PRIMARY KEY ограничение и должна принадлежать этой таблице или материализованному представлению.

    • родительский_столбец

      Столбец в родительской таблице или материализованном представлении, который является частью его первичного ключа. Все первичные ключевые столбцы родительской таблицы или материализованного представления должны быть перечислены.

      Если родительские столбцы не указаны, они задаются порядком, заданным в определении PRIMARY KEY.

    • FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

      Добавляет ограничение внешнего ключа одного столбца в таблицу или материализованное представление, используя предыдущее определение столбца внешнего ключа.

      Этот column_constraint равносилен table_constraint.

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

  • вариант_ограничения

    Выводит свойства ограничений. Все свойства являются необязательными, но подразумеваются по умолчанию. Каждое свойство может быть указано не более одного раза.

    • NOT ENFORCED

      Azure Databricks не выполняет никаких действий, чтобы применить его для существующих или новых строк.

    • DEFERRABLE

      Принудительное применение ограничений может быть отложено.

    • INITIALLY DEFERRED

      Принудительное применение ограничений отложено.

    • NORELY

      Azure Databricks не использует ограничение для перезаписи запроса.

  • вариант_внешнего_ключа

    Выводит свойства, относящиеся к ограничениям внешнего ключа. Все свойства являются необязательными, но подразумеваются по умолчанию. Каждое свойство может быть указано не более одного раза.

    • MATCH FULL

      Чтобы ограничение считалось истинным, все значения столбцов должны быть NOT NULL.

    • ON UPDATE NO ACTION

      Если родитель PRIMARY KEY обновлен, Azure Databricks не принимает никаких действий, чтобы ограничить обновление или обновить внешний ключ.

    • ON DELETE NO ACTION

      Если родительская строка удалена, Azure Databricks не принимает никаких действий для ограничения действия, обновления внешнего ключа или удаления зависимой строки.

Внимание

Azure Databricks не применяет ограничения первичного ключа или внешнего ключа. Подтвердите ограничения ключа перед добавлением первичного или внешнего ключа. Процесс приема может обеспечить такую гарантию, или же вы можете выполнить проверки данных.

Примеры

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