Ao 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 a exclusão de um objeto havendo outros objetos dependentes dele. Por exemplo, tentar remover a tabela produtos conforme declarada na Seção 2.4.5, onde a tabela pedidos depende dela, produz uma mensagem de erro como mostrada abaixo:
DROP TABLE produtos; NOTICE: constraint $1 on table pedidos depends on table produtos ERROR: Cannot drop table produtos because other objects depend on it Use DROP ... CASCADE to drop the dependent objects too
A mensagem de erro mostra uma dica útil: Se não tem importância a exclusão de todos os objetos dependentes, então pode 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 saber o que DROP ... CASCADE fará, deve ser executado o comando DROP sem o CASCADE, e lida a mensagem NOTICE).
Todos os comandos de exclusão do PostgreSQL suportam a especificação de 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 de impedir a exclusão do objeto quando existem objetos dependentes.
Nota: No padrão SQL a especificação de RESTRICT ou CASCADE é obrigatória. Nenhum banco de dados implementa deste modo, mas fazer RESTRICT ou CASCADE o comportamento padrão varia entre os sistemas.
Nota: As dependências 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 versão.