[firebase-br] Problema Chave Estrangeira

Carlos H. Cantu listas em warmboot.com.br
Seg Jan 11 17:43:39 -03 2016


Exato, nunca misture DDL e DML em uma mesma transação.

A correção dessa "limitação" exige uma mudança de arquitetura no
Firebird, e até o momento, nenhum core-developer propôs uma solução
efetiva.

O problema acontece se os objetos manipulados pela DDL são os mesmos
(ou possuem alguma dependência/relacionamento) com os objetos
manipulados pela DML.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

J> Lembro-me de ter tido problema na versão 1.0 do FB, com mistura de DDL e
J> DML, agora nas versões superiores não sei se é possível, eu sempre
J> evito.


J> "I don't think, that mixing DDL and DML is a good idea..." [1]


J> [1]
J> http://comments.gmane.org/gmane.comp.db.firebird.dotnetprovider/7314



J> Em Seg, 2016-01-11 às 16:28 -0200, Luiz Filipe Meinecke escreveu:
>> Boa Tarde Pessoal,
>> 
>> estou com a seguinte situação:
>> 
>> Em uma *mesma *transação eu deleto várias chaves estrangeiras de algumas
>> tabelas, limpo várias tabelas (delete from) e adiciono vários registros
>> (insert).
>> 
>> Faço desta maneira para caso ocorra algum erro, apenas realizo o Rollback
>> da transação sem afetar o banco para os usuários.
>> 
>> Porém mesmo após remover as chaves estrangeiras das tabelas envolvidas,
>> este erro é gerado: *violation of FOREIGN KEY contraint '***unknown***' on
>> table... Foreign key references are present for the record*
>> 
>> Se eu divido a exclusão das chaves estrangeiras e limpeza das tabelas em
>> duas transações, funciona. Mas não quero fazer isto, pois descaracteriza o
>> meu objetivo.
>> 
>> Alguém já passou por esta situação e poderia me dizer o que ocorre?
>> 
>> Muito obrigado pela atenção!
>> 
>> Att,
>> Luiz
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html



J> ______________________________________________
J> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
J> Para saber como gerenciar/excluir seu cadastro na lista, use:
J> http://www.firebase.com.br/fb/artigo.php?id=1107
J> Para consultar mensagens antigas:
J> http://www.firebase.com.br/pesquisa_lista.html





Mais detalhes sobre a lista de discussão lista