Descarte de restrições

As restrições são descartadas usando o comando ALTER TABLE:

  • ALTER TABLE … DROP CONSTRAINT … descarta explicitamente a restrição especificada. Similar às restrições de modificação, a restrição pode ser identificada pelo nome da restrição ou definição da coluna junto com o tipo de restrição. Para uma chave primária, elas também podem ser identificadas usando a palavra-chave PRIMARY KEY.

  • ALTER TABLE … DROP COLUMN … descarta uma coluna e as restrições associadas.

Por padrão, quando uma chave primária/única é descartada, todas as chaves estrangeiras referentes à chave que está sendo descartada também são descartadas, a menos que a opção RESTRICT seja especificada.

As restrições também são descartadas quando tabelas/esquemas/bancos de dados associados são descartados. Os comandos DROP aceitam as opções de descarte CASCADE | RESTRICT.

Nota

As tabelas, esquemas e bancos de dados descartados podem ser restaurados usando o comando UNDROP; as colunas e restrições descartadas não podem ser restauradas.

Neste tópico:

Descarte de restrições

Restrições de chaves estrangeiras/únicas/primárias podem ser explicitamente descartadas (usando ALTER TABLE … DROP CONSTRAINT …):

ALTER TABLE <table_name> DROP { CONSTRAINT <name> | PRIMARY KEY | { UNIQUE | FOREIGN KEY } (<column>, [ ... ] ) } [ CASCADE | RESTRICT ]
Copy

Para essas restrições, ao descartar uma restrição de chave estrangeira ou uma restrição de chave primária/única sem referências de chave estrangeira, as restrições são descartadas diretamente.

A opção de descarte padrão é CASCADE, o que significa que o descarte de uma chave única/primária com referências de chave estrangeira descarta todas as chaves estrangeiras de referência juntamente com a chave única/primária.

  • Se a opção de descarte RESTRICT for especificada, ao descartar uma chave primária/única, um erro é retornado se houver chaves estrangeiras que façam referência às chaves que estão sendo descartadas.

Descarte de colunas

O descarte de colunas usando ALTER TABLE … DROP COLUMN … se comporta de forma semelhante ao descarte de restrições:

ALTER TABLE <table_name> DROP COLUMN <name> [ CASCADE | RESTRICT ]
Copy

A opção de descarte padrão é CASCADE, o que significa que qualquer restrição que contenha a coluna sendo descartada também é descartada. Se uma chave primária/única envolvendo a coluna for referenciada por outras restrições de chave estrangeira, todas as chaves estrangeiras referenciadas são descartadas.

  • Se a opção RESTRICT for especificada, um erro é retornado se a coluna tiver chaves primárias/únicas com referências de chave estrangeira. O comando de descarte só tem êxito se não houver restrições definidas ou referentes à coluna que está sendo descartada.

Descarte de tabelas/esquemas/bancos de dados

O comando DROP descarta a tabela, esquema ou banco de dados especificado e também pode ser especificado para descartar todas as restrições associadas ao objeto:

DROP { TABLE | SCHEMA | DATABASE } <name> [ CASCADE | RESTRICT ]
Copy

Similar ao descarte de colunas e restrições, CASCADE é a opção padrão de descarte, e todas as restrições que pertencem ou fazem referência ao objeto que está sendo descartado também serão descartadas.

Por exemplo, ao descartar um banco de dados, se o banco de dados contém uma chave primária/única que é referenciada por uma chave estrangeira de outro banco de dados, as chaves estrangeiras de referência também são descartadas.

Se o objeto for recuperado depois, todas as restrições relevantes anteriormente descartadas serão restauradas.

Se a opção RESTRICT for especificada, um erro é retornado se qualquer restrição primária/única relacionada ao objeto tiver referências de chave estrangeira.