GARANTIR DESCONTO

Fórum Erro ao criar Segunda Chave Estrangeira #47962

09/11/2004

0

Olá pessoal, tudo bem? Espero q sim..

Estou usando o Firebird 1.5 e criando e modificando minha tabela pelo IbExpert, aquela versão free.. o problema acontece sempre q eu tento criar uma segunda regra pra deletar registros, q é assim:

Tabela Grupos Tabela SubGrupos Tabela Revistas

PkCod_Grupo PkCod_SubGrupo PkCod_Revista
Nome FkCod_Grupo FkCod_Grupo
Nome FkCod_SubGrupo
Nome

Basicamente é isso.. o q quero é o seguinte, quando eu deletar um Grupo, q o programa delete também o SubGrupo e a Revista ligado a ele.. isso eu consigo, botando o código na Tabela Revistas pra ´apagar em cascata´.. só q, se eu tento colocar outro código pra q a revista seja apagada se for deletado um SubGrupo, o programa dá o erro abaixo, e nao deixa eu gerar esse scrip.. o q será q pode ser?

This operation is not defined for system tables.
unsuccessful metadata update.
STORE RDB$INDICES failed.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_5".




Allan Elias Ramos :?:


Aersoftware

Aersoftware

Responder

Posts

09/11/2004

Fsflorencio

Não sei se entendí o problema: Ele ocorre quando você tenta manipular os dados ou quando você tenta rodar um script?

ps. Se puder, coloque os scripts de criação das chaves primárias e estrangeiras pra nós darmos uma olhada.


Responder

Gostei + 0

10/11/2004

Aersoftware

Desculpe, acho q minha explicação ficou meio confusa mesmo.. é o seguinte, tirei alguns prints pra demonstrar..

Tenho 3 Tabelas:

Grupos
SubGrupos
Revistas

Sou [b:739ca452af]obrigado[/b:739ca452af] a ter um Grupo e um SubGrupo pra ter uma revista.. mas no caso, um Grupo pode ter muitos SubGrupos, e um SubGrupo pode ter muitas Revistas..

Neste print, o q eu quero fazer funciona, q é, quando deletar um Grupo, deletar tb todos Grupos e Revistas ligado nele..

[url]www.multiversox.com/phpteste/ChaveEstrangeiraGrupos.JPG[/url]


Neste segundo print, o q tento fazer é colocar tb, pra quando eu deletar um SubGrupo, deletar todas revistas contidas nele..

[url]www.multiversox.com/phpteste/ChaveEstrangeiraSubGrupos.JPG[/url]

só q quando boto pra rodar esse script, ele da o seguinte..

[url]www.multiversox.com/phpteste/ChaveEstrangeiraSubGruposErro.JPG[/url].

Isso q nao entendo pq.. :cry:



Allan Elias Ramos :cry:


Responder

Gostei + 0

11/11/2004

Fsflorencio

O erro está ocorrendo pq vc está tentando criar duas constraints com o mesmo nome: FK_TBREVNACIONAIS. As constraints (ou restrições) devem ter nomes diferentes.

O q eu não entendí, é que na figura aparecem duas constraints com o mesmo nome. Foi feita alguma montagem?


Responder

Gostei + 0

11/11/2004

Aersoftware

Hmmm.. entendi.. mas eu posso entao colocar o nome da outra constrains como FK_TBREVNACIONAIS1 por exemplo q funciona normal??

A figura ta daquele jeito pq eu nao salvei as alterações.. o programa deixa eu fazer, mas quando dou o Commit, ele gera o erro da 3ª figura..



Allan Elias Ramos :roll:


Responder

Gostei + 0

11/11/2004

Fsflorencio

Pode.

A dica que te dou é a seguinte:
No nome da constraint colocar o nome das duas tabelas, por ex: FK_CONTAS_RECEBER_CLIENTES, ITENS_PEDIDOS_PRODUTOS.
Desta forma, quando ocorrer algum erro na aplicação envolvendo estas chaves, de cara já dá pra descobrir quais são as tabelas envolvidas sem haver necessidade de abrir o banco.


Responder

Gostei + 0

11/11/2004

Aersoftware

Certo, valeu fsflorencio, vou fazer essas modificações. obrigado. Abraços..



Allan Elias Ramos :roll:


Responder

Gostei + 0

12/11/2004

Aersoftware

Só mais uma perguntinha.. se eu modificar o nome de uma constraints já criada, eu tenho q ´autalizar´ a conexao do banco com o delphi? Pelo q me lembro, se eu modifcar um campo texto por exemplo, aumentando o tamanho dele, tenho q atualizar a conexao pra ele atualizar o campo no delphi.. isso deve ser feito tb com a constraints?



Allan Elias Ramos :wink:


Responder

Gostei + 0

12/11/2004

Gandalf.nho

Só mais uma perguntinha.. se eu modificar o nome de uma constraints já criada, eu tenho q ´autalizar´ a conexao do banco com o delphi? Pelo q me lembro, se eu modifcar um campo texto por exemplo, aumentando o tamanho dele, tenho q atualizar a conexao pra ele atualizar o campo no delphi.. isso deve ser feito tb com a constraints?


Não.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar