Tenho uma restrição de chave estrangeira na minha tabela, quero adicionar ON DELETE CASCADE a ela.
Eu tentei isso:
alterar tabela child_table_name modificar restrição fk_name chave estrangeira (child_column_name) faz referência a parent_table_name (parent_column_name) na exclusão em cascata;
Não funciona
EDIT:
chave estrangeira já existe, existem dados na coluna chave estrangeira.
A mensagem de erro recebida após a execução da instrução:
ORA-02275: essa restrição referencial já existe na tabela
Respostas:
Você não pode adicionar
ON DELETE CASCADE
a uma restrição já existente. Você terá quedrop
refazercreate
a restrição. A documentação mostra que aMODIFY CONSTRAINT
cláusula pode modificar apenas o estado de uma restrição (ou seja:ENABLED/DISABLED
...).fonte
Primeiro
drop
sua chave estrangeira e tente o comando acima, coloque emadd constraint
vez demodify constraint
. Agora este é o comando:fonte
Esse PL * SQL gravará no DBMS_OUTPUT um script que eliminará cada restrição que não possui exclusão em cascata e a recriará com exclusão em cascata.
NOTA: a execução da saída desse script é POR SUA CONTA E RISCO. É melhor ler o script resultante e editá-lo antes de executá-lo.
fonte
Como explicado anteriormente:
Como você pode ver, esses comandos devem ser separados, largando primeiro e depois adicionando.
fonte
go
de ponto e vírgula como no postgres e no próprio SqlServer. Mas os códigos principais restantes são sql standar. Teste com ponto e vírgula, eu só mudou[
ou]
é inválido no SQL padrão (e Oracle). O Oracle também não suportaon update
cláusula para uma chave estrangeira.[
]
é específico do SqlServer. Vou limpar mais. Sobreon update
Eu não posso dizer nada sobre.Resposta para USUÁRIOS DO MYSQL:
fonte
Para quem usa o MySQL:
Se você
PHPMYADMIN
acessar sua página da Web e navegar para a tabela que possui a chave estrangeira que deseja atualizar, tudo o que você precisa fazer é clicar noRelational view
localizado naStructure
guia e alterar aOn delete
opção de menu selecionar paraCascade
.Imagem mostrada abaixo:
fonte
Aqui está uma solução útil! Estou usando o SQL Server 2008 R2.
Como você deseja modificar a restrição FK adicionando ON DELETE / UPDATE CASCADE, siga estas etapas:
NÚMERO 1:
Clique com o botão direito do mouse na restrição e clique em Modificar
NÚMERO 2:
Escolha sua restrição no lado esquerdo (se houver mais de uma). No lado direito, recolha o ponto " INSERT AND UPDATE Specification " e especifique as ações na linha Excluir regra ou Atualizar regra para atender às suas necessidades. Depois disso, feche a caixa de diálogo.
NÚMERO 3:
O passo final é salvar essas modificações (é claro!)
PS: Isso me salvou de um monte de trabalho, pois desejo modificar uma chave primária mencionada em outra tabela.
fonte
Se você deseja alterar uma chave estrangeira sem soltá-la, é possível:
fonte
fonte