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