[firebase-br] Triggers - As Vezes Não Dispara

Adilson B. Cápua Jr. juniorcapua em yahoo.com.br
Dom Maio 8 22:28:09 -03 2005


PessoALL,

	No meu banco de dados, tenho uma Trigger que dispara sempre que um
novo
registro é incluso na tabela "E", por exemplo. Essa Trigger faz um FOR
SELECT
numa Tabela "X" e para cada registro encontrado em "X", numa tabela "Z" com
um
relacionamento mestre/detalhe com a tabela que disparou a Trigger ("E"),
cria
alguns registros.
	Essa semana um usuário me reportou um bug que, de vez em quando, a
tabela detalhe não é preenchida! Achei estranho e fui lá dá uma conferida.
Realmente, a tabela PAI ("E") tinha alguns registros e a FILHA ("Z") não
tinha
os registros referentes ao PAI. Ou seja, é como se a Trigger não tivesse
sido
disparada!
	Bom, minha aplicação está escrita em Delphi 7, usando o DBExpress.
Analizando
o código com mais atenção (no meu programa), não vi nada de errado e nem
diferente do que eu costumo fazer! Uso os métodos INSERT e POST do
ClientDataSet
para fazer estas operações na tabela. Se o usuário inserir apenas 1
registro,
funciona! Mas se insere vários, de vez em quando, acontece esse problema!
Tipo assim,
ao final de cada inclusão, após um POST e um APPLYUPDATES(-1), questiono o
usuário se
ele quer inserir um outro registro. E assim (numa mesma operação), ele
insere
diversos registros! Detalhe: não estou usando nenhuma transação para
controlar isso!
Deixo o próprio DBExpress fazer o trabalho, visto que é apenas uma inclusão
de dados. 
	Não tenho idéia do motivo desse problema! Já fiz vários testes aqui
no escritório
e aparentemente está funcionando certo! Não consegui fazer o erro acontecer
- o que
seria de uma certa forma um paradoxo, eu sei! :)
	Se alguém tiver alguma idéia do motivo disso ou mesmo dica, please,
qualquer informação
será muito bem vinda...

[]'s


________________________________
Adilson Bragança Cápua Jr.
Linhares - ES             Brasil

mailto: juniorcapua em yahoo.com.br
        juniorcapua em gmail.com
  
http://www.dellas.rg3.net

"Save a tree. Send an e-mail"







Mais detalhes sobre a lista de discussão lista