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


предложение DROP CONSTRAINT

Область применения:флажок Databricks SQL флажок Databricks Runtime

Удаляет первичный ключ, внешний ключ или проверку constraint из table.

Синтаксис

DROP { PRIMARY KEY [ IF EXISTS ] [ RESTRICT | CASCADE ] |
       FOREIGN KEY [ IF EXISTS ] ( column [, ...] ) |
       CONSTRAINT [ IF EXISTS ] name [ RESTRICT | CASCADE ] }

Parameters

  • PRIMARY KEY [если существует]

    Применимо:установлен флажок Databricks SQL установлен флажок Databricks Runtime 11.3 LTS и выше установлен флажок Unity Catalog только

    Удаляет первичный ключ из table.

  • ВНЕШНИЙ КЛЮЧ [ ЕСЛИ СУЩЕСТВУЕТ] ( column [, ...] )

    применимо:отмечено галочкой Databricks SQL отмечено галочкой Databricks Runtime 11.3 LTS и выше отмечено галочкой только Unity Catalog

    Удаляет внешний ключ, идентифицируемый по упорядоченному list из columns.

  • CONSTRAINT [ ЕСЛИ СУЩЕСТВУЕТ ] имя

    Удаляет первичный ключ, внешний ключ или ограничение constraint, определенные по имени. Ограничения проверки можно удалить только по имени.

  • RESTRICT или CASCADE

    Если указан параметр RESTRICT и ссылка на первичный ключ указывается любым внешним ключом, инструкция завершится ошибкой. Если указать CASCADE, удаление первичного ключа приводит к удалению внешних ключей, ссылающихся на table. Значение по умолчанию — RESTRICT.

  • IF EXISTS

    Если указать IF EXISTS оператор будет игнорироваться, если table не соответствует constraint.

Примеры

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

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

> ALTER TABLE pets ADD CONSTRAINT pets_name_not_cute_chk CHECK (length(name) < 20);

-- Drop the check constraint by name
> ALTER TABLE pets DROP CONSTRAINT pets_name_not_cute_chk;

-- Attempt to drop the primary key of persons by name
> ALTER TABLE persons DROP CONSTRAINT persons_pk RESTRICT;
  Error: A foreign key `pets_persons_fk` depends on the primary key

-- Drop the foreign key from pets by listing the columns
> ALTER TABLE pets DROP FOREIGN KEY IF EXISTS  (owner_first_name, owner_last_name);

-- Drop the primary key of persons
> ALTER TABLE persons DROP PRIMARY KEY CASCADE;