Posso executar algo assim no Postgresql, ou seja, executar CASCADE DELETE
para apenas uma instrução?
DELETE CASCADE FROM foo WHERE bar = 'baz';
Meu objetivo é excluir não apenas os registros selecionados de table foo
, mas todos os registros em todas as tabelas onde foo.id
column é usado como chave estrangeira, sem adicionar a restrição para toda a tabela foo
: ON DELETE CASCADE
.
Relacionado:
- postgresql - CASCADE DELETE apenas uma vez - Stack Overflow - uma pergunta semelhante foi feita em 2008. Gostaria de saber se alguma coisa mudou desde então.
- Excluir uma linha em uma tabela também deve excluir as linhas correspondentes em outra tabela - quero evitar isso, pois é
ALTER
a tabela inteira e afeta todas asDELETE
instruções. Eu quero fazer algo assim, mas por declaração . - PostgreSQL: Documentação: 16: 5.4. Restrições - não foi possível encontrar uma resposta nos documentos.
- É uma boa ou má ideia usar "ON UPDATE CASCADE ON DELETE CASCADE" para chaves estrangeiras? Por que esse mecanismo existe? - Os prós e os contras
ON DELETE CASCADE
são discutidos nas respostas destas perguntas e respostas.
Não há como excluir automaticamente todas as linhas dependentes; você terá que excluí-los antes de excluir a linha referenciada.