Klauzule DROP CONSTRAINT

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Zahodí omezení PRIMÁRNÍHO KLÍČE, CIZÍHO KLÍČE nebo CHECK z tabulky.

Syntaxe

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

Parametry

  • PRIMÁRNÍ KLÍČ [ POKUD EXISTUJE ]

    Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 11.3 LTS a vyšší zaškrtnutí označeného ano pouze katalog Unity

    Zahodí primární klíč z tabulky.

  • CIZÍ KLÍČ [ POKUD EXISTUJE ] ( sloupec [; ...] )

    Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 11.3 LTS a vyšší zaškrtnutí označeného ano pouze katalog Unity

    Zahodí cizí klíč identifikovaný seřazeným seznamem sloupců.

  • CONSTRAINT [ IF EXISTS ] name

    Zahodí primární klíč, cizí klíč nebo zkontroluje omezení identifikované názvem. Omezení kontroly je možné zrušit pouze podle názvu.

  • RESTRICT nebo CASCADE

    Pokud zadáte RESTRICT a na primární klíč odkazuje jakýkoli cizí klíč, příkaz selže. Pokud zadáte CASCADE, vyřazení primárního klíče způsobí vyřazení cizích klíčů odkazujících na tabulku. Výchozí hodnota je RESTRICT.

  • POKUD EXISTUJE

    Pokud zadáte IF EXISTS příkaz, bude ignorován, pokud tabulka nemá žádné odpovídající omezení.

Příklady

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