Descartando restrições

As restrições são descartadas usando os seguintes comandos ALTER TABLE:

  • ALTER TABLE … DROP CONSTRAINT descarta explicitamente a restrição especificada. Semelhante à modificação de restrições, você pode identificar a restrição usando o nome dela ou a definição da coluna, juntamente com o tipo de restrição. Para uma chave primária, também é possível identificar a restrição 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 ou única é descartada, todas as chaves estrangeiras que fazem referência à chave removida também são descartadas, a menos que a opção de descarte RESTRICT seja especificada.

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

Nota

Você pode restaurar tabelas, esquemas e bancos de dados descartados usando o comando UNDROP. Não é possível restaurar colunas e restrições descartadas.

Descartando restrições

Você pode descartar explicitamente as restrições UNIQUE, PRIMARY KEY, FOREIGN KEY e CHECK usando o comando ALTER TABLE … DROP CONSTRAINT:

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

Para essas restrições, ao descartar uma restrição FOREIGN KEY ou uma restrição de chave primária ou única sem referências a chaves estrangeiras, as restrições serão descartadas diretamente.

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

Se a opção de descarte RESTRICT for especificada, ao descartar uma chave primária ou única, um erro será retornado se existirem chaves estrangeiras que referenciam as 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 ]

Para restrições PRIMARY KEY, UNIQUE e FOREIGN KEY, a opção de descarte padrão é CASCADE, o que significa que qualquer restrição que contenha a coluna que está sendo descartada também será descartada. Se uma chave primária ou única que envolva a coluna for referenciada por outras restrições FOREIGN KEY, todas as chaves estrangeiras que a referenciam serão descartadas. Se a opção RESTRICT for especificada, um erro será retornado se a coluna tiver chaves primárias ou únicas com referências a chaves estrangeiras. O comando de descarte só terá sucesso se não houver restrições definidas na coluna que está sendo descartada ou que a referenciem.

Para restrições CHECK que fazem referência a uma única coluna, a opção de descarte padrão é CASCADE. No entanto, para restrições CHECK que fazem referência a várias colunas, a opção de descarte padrão é RESTRICT, o que evita a exclusão acidental de restrições que podem ser necessárias para a integridade dos dados.

Descartando tabelas, esquemas e 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 ]

Semelhante ao descarte de colunas e restrições, CASCADE é a opção de descarte padrão, e todas as restrições que pertencem ao objeto que está sendo descartado ou o referenciam também são descartadas.

Por exemplo, ao descartar um banco de dados, se o banco de dados contiver uma chave primária ou exclusiva que seja referenciada por uma chave estrangeira de outro banco de dados, as chaves estrangeiras que fazem referência a ele também serão descartadas.

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

Se a opção RESTRICT for especificada, um erro será retornado se alguma restrição PRIMARY KEY ou UNIQUE no objeto tiver referências de chave estrangeira.