5.10. Acompanhando as dependências

PostgreSQL 14.5: Acompanhamento de dependência

Ao se criar uma estrutura de banco de dados complexa, envolvendo muitas tabelas com restrições de chave estrangeira, visões, gatilhos, funções, etc., cria-se, implicitamente, uma rede de dependências entre os objetos. Por exemplo, uma tabela com uma restrição de chave estrangeira depende da tabela referenciada.

Para garantir a integridade de toda a estrutura do banco de dados, o PostgreSQL não permite remover um objeto quando há objetos que dependem do mesmo. Por exemplo, tentar remover a tabela produtos, conforme declarada na Seção 5.3.5 onde a tabela pedidos depende dela, produz uma mensagem de erro como esta:

DROP TABLE produtos;

NOTA:  a restrição pedidos_cod_prod_fkey na tabela pedidos depende da tabela produtos
ERRO:  não foi possível remover a tabela produtos porque outros objetos dependem da mesma
DICA:  Use DROP ... CASCADE para remover os objetos dependentes também.

A mensagem de erro mostra uma dica útil: Se não tem importância remover todos os objetos dependentes, então poderá ser executado

DROP TABLE produtos CASCADE;

e todos os objetos dependentes serão removidos. Neste caso não será removida a tabela pedidos, será removida apenas a restrição de chave estrangeira (caso se deseje verificar o que DROP ... CASCADE fará, deve ser executado o comando DROP sem o CASCADE, e lidas as NOTAs, ou NOTICE em inglês).

Todos os comandos de remoção do PostgreSQL permitem especificar CASCADE. Obviamente, a natureza das dependências possíveis varia conforme o tipo do objeto. Pode ser escrito RESTRICT em vez de CASCADE, para obter o comportamento padrão que é impedir a remoção do objeto quando existem objetos que dependem do mesmo.

Nota: De acordo com o padrão SQL é obrigatório especificar RESTRICT ou CASCADE. Nenhum banco de dados obriga seguir esta regra, mas tornar RESTRICT ou CASCADE o comportamento padrão varia entre sistemas.

Nota: As dependências de restrição de chave estrangeira e as dependências de coluna serial, das versões do PostgreSQL anteriores a 7.3, não são mantidas ou criadas durante o processo de atualização de versão. Todos os outros tipos de dependência são criados de forma apropriada durante a atualização de uma versão anterior a 7.3.

SourceForge.net Logo CSS válido!