Oi, Paulo! Tudo bem?
Desde já, peço desculpas pela demora em te responder.
Muito pertinente o que você falou!
A cláusula RESTRICT
se faz necessária para impedir que registros de uma tabela mãe sejam excluídos caso possuam alguma referência na tabela filha, evitando possíveis lacunas e problemas de integridade no nosso banco de dados.
Quando falamos sobre a exclusão de uma tabela mãe, o PostgreSQL também possui uma lógica semelhante, proibindo que esta seja excluída caso se relacione com outra tabela, olha só:
Após criar as tabelas clientes
e pedidos
(que possui uma chave estrangeira referente à clientes
) e tentar excluir clientes
, temos como retorno a mensagem abaixo:
![Retorno da execução do comando DROP TABLE no PostgreSQL](https://i.imgur.com/2tYAOb6.png)
Traduzindo, a mensagem acima diz:
- ERRO: não é possível descartar a tabela
clientes
porque outros objetos dependem dela - DETALHE: restrição
pedidosclienteidfkey
na tabela pedidos dependem da tabela clientes - DICA: Use
DROP
... CASCADE
para descartar os objetos dependentes também.
Assim, percebe-se que há um impedimento de excluir a tabela mãe por conta da restrição de chave estrangeira!
Paulo, talvez em seu contexto esse procedimento não tenha acontecido, contudo, isso se trata de um padrão do PostgreSQL. Qualquer dúvida, estarei aqui para conversarmos!
Abraço.