Fórum Alterar Chave Extrangeira para On Update cascade #42588
25/02/2004
0
Preciso alterar as chaves extrangeiras das minhas tabelas colocando ON UPDATE CASCADE ON DELETE CASCADE.
Meu script inicial é:
ALTER TABLE "TBITENSCPAGAR" ADD FOREIGN KEY ("ICPCPAGAR_ID") REFERENCES TBCPAGAR ("ID");Foi assim q construi as FK.
Percebendo que preciso colocar as regras de negocio, quero q fique:
ALTER TABLE "TBITENSCPAGAR"
ADD CONSTRAINT "FK_ITENSCPAGAR_CPAGAR" FOREIGN KEY ("ICPCPAGAR_ID") REFERENCES TBCPAGAR ("ID")
ON UPDATE CASCADE ON DELETE CASCADE;Se eu jogar o código acima, a tabela é atualizada, mas fica uma espécie de lixo, ou seja, o código acima é adicionado no script, mas o anterior continua! O que eu quero é atualizar a tabela de forma q o script não fique com esse lixo, e sim, apenas a FK atual!
Já tentei fazer assim:
ALTER TABLE "TBITENSCPAGAR"
ALTER CONSTRAINT "FK_ITENSCPAGAR_CPAGAR" FOREIGN KEY ("ICPCPAGAR_ID") REFERENCES TBCPAGAR ("ID")
ON UPDATE CASCADE ON DELETE CASCADE;Mas não funciona!
Alguem tem alguma sugestão!?!?
Rafaelunp
Curtir tópico
+ 0Post mais votado
25/02/2004
ALTER TABLE ´TBITENSCPAGAR´ DROP CONSTRAINT nome_da_constraint;
T+
Afarias
Gostei + 1
Mais Posts
25/02/2004
Rafaelunp
Afarias,
´Dropei´ as FK, mas na hora de criar uma nova, dá erro!
Unsuccessful metadata update
Unknown columns in index RDB$FOREIGN10
Statement: ALTER TABLE "TBAPTOESTOQUE"
ADD CONSTRAINT "FK_APESTOQUE_APTO" FOREIGN KEY ("AEAPTO_ID") REFERENCES TBAPTO ("ID")
ON UPDATE CASCADE ON DELETE CASCADEJá reiniciei o BD, para ver se não é nada na memoria, mas nao funcionou!
Gostei + 0
26/02/2004
Rafaelunp
Gostei + 0
26/02/2004
Afarias
A idéia q passa é q vc está passando o nome da coluna errado! De uma olhadinha ai... principalmente q vc usa os nomes entre aspas -- dai, tem de se observar maiúsculas e minúsculas -- exatamente como foi criado!
T+
Gostei + 0
26/02/2004
Logado
viasualize a tabela rdb$relations ou alo parecido q vc vai encontrar o indice q vc acabou de deletar la, apaue-o e tente cria-lo de novo...
meu teclado ta f.....
Gostei + 0
26/02/2004
Rafaelunp
Pessoal,
realmente tenho que insistir nesta ajuda... Seguinte...
Quando criei a tabela, criei a FK assim:
ALTER TABLE "TBAPTOESTOQUE" ADD FOREIGN KEY ("AEAPTO_ID") REFERENCES TBAPTO ("ID");Ai, adicionei uma nova com o On Delete no final. o meu codigo (Meta Data) ficou assim:
ALTER TABLE "TBAPTOESTOQUE" ADD FOREIGN KEY ("AEAPTO_ID") REFERENCES TBAPTO ("ID") ON DELETE CASCADE;
ALTER TABLE "TBAPTOESTOQUE" ADD FOREIGN KEY ("AEAPTO_ID") REFERENCES TBAPTO ("ID");Eu simplesmente preciso, excluir esse lixo!
ALTER TABLE "TBAPTOESTOQUE" ADD FOREIGN KEY ("AEAPTO_ID") REFERENCES TBAPTO ("ID");Faço isso conforme orientação:
ALTER TABLE "TBAPTOESTOQUE" DROP CONSTRAINT AEAPTO_ID;
Sendo que dá esse erro:
Unsuccessful metadata update CONSTRAINT AEAPTO_ID does not exist Statement: ALTER TABLE "TBAPTOESTOQUE" DROP CONSTRAINT AEAPTO_ID
E ai!?!?
Preciso realmente da ajuda de voces!!
Gostei + 0
27/02/2004
Afarias
Ahhhhhhh.... vc quando criou a constraint, não definiu seu NOME -- sendo assim o IB colocou um nome qualquer gerado por ele.
Note q na orientação, informa q para dropar uma constraint vc deve passar o NOME da mesma! E *não* é isso q vc está fazendo!
Primeiro veja qual o nome da constraint (dado pelo IB -- algo tipo ´INTEG_n´) e então use o comando:
ALTER TABLE nome_tabela DROP CONSTRAINT nome_constraint;
Para saber o nome da constraint, vai depender da ferramenta q vc está usando, mas tenho certeza que vc não terá dificuldade.
Se vc usa o ISQL, basta usar o comando
SHOW TABLE nome_da_tabela;
e vc terá alem da lista de campos, a lista de constraints da tabela.
T+
Gostei + 1
28/02/2004
Rafaelunp
Muito Obrigado! :lol:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)