[firebase-br] RES: RES: RES: RES: RES: Erro em trigger

Carlos H. Cantu listas em warmboot.com.br
Segunda Fevereiro 1 08:33:32 -03 2021


Se está usando o IBO, coloque um IB_MonitorDialog e verifque qual
comando de insert está realmente sendo enviado pro servidor, pra ter
certeza que está sendo enviado nulo nesses campos.

Você diz que o trigger não dispara. Uma forma fácil de saber se
realmente não está disparando é você colocar um exception no trigger
pra forçar um erro.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

r> Bom dia Carlos,

r> Não sei onde esta o problema, estou tentando descobrir, o que
r> descobri até o momento foi que a trigger não dispara.
r> Já coloquei como not null os campos e da um erro dizendo que o
r> campo ordem não esta preenchido. A maquina não esta na rede,
r> Estou tentando aqui em meu computador. No ibo, removi os campos
r> ordem e datahora, pq imaginei que estava dando algum conflito,
r> Mesmo assim não funcionou.

r> É difícil saber, a única informação que tenho até agora é que a
r> trigger não dispara. Pode ser outra coisa, pode.
r> Mas até o momento, não consegui descobrir.

r> Se tiver mais alguma sugestão agradeço.

r> Grato

r> Enviado do Email para Windows 10

r> De: Carlos H. Cantu via lista
r> Enviado:sábado, 30 de janeiro de 2021 14:51
r> Para: lista em firebase.com.br
r> Cc:Carlos H. Cantu
r> Assunto: Re: [firebase-br] RES: RES: RES: RES: Erro em trigger

r> Esse tipo de trigger é muito comum. Eu uso desde a época do InterBase,
r> passei por todas as versões do Firebird, e nunca tive problemas.

r> Se a base não está corrompida e o trigger está ativo, então é certeza
r> que a falha é na logica da sua aplicação ou de outros triggers da
r> base.

r> Já foi sugerido aqui algumas coisas que vão te ajudar a descobrir onde
r> a falha está, entre elas:

r> - Definir o campo como not null na base de dados, assim, quando alguma
r> rotina/trigger mudar ele pra null, vai quebrar e vc vai saber na mesma
r> hora

r> - Criar triggers de auditoria que guardam tudo que aconteceu com o
r> registro em tabelas de log (tem exemplo no site). Isso pode ajudar a
r> descobrir qual foi o IP que alterou, etc.

r> Jogar a culpa no Firebird ou parar de confiar em triggers não é
r> solução. Minhas regras de negócio são 95% implementadas em triggers.
r> Se não desse pra confiar neles, então eu estaria perdido.

r> []s
r> Carlos H. Cantu
r> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
r> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

r>> Bom dia Carlos,

r>> Removi inclusive os fields do meu IBDetailFiscal e não tem em
r>> nenhum outro lugar inserindo null no campo ORDEM e DATAHORA.

r>> Não sei mais o que fazer, mas uma coisa é certa, não tenho como
r>> confiar na execução de triggers no Firebird, vou ter
r>> Que fazer manual em cada lançamento.

r>> É a única solução  que estou conseguindo chegar agora.

r>> Grato pela ajuda

r>> Enviado do Email para Windows 10

r>> De: Carlos H. Cantu via lista
r>> Enviado:sexta-feira, 29 de janeiro de 2021 15:43
r>> Para: lista em firebase.com.br
r>> Cc:Carlos H. Cantu
r>> Assunto: Re: [firebase-br] RES: RES: RES: Erro em trigger

r>> Verifique outros triggers ou outras rotinas, tanto no sistema como no
r>> banco, que podem estar colocando null nesses campos depois de ter
r>> passado por esse trigger.

r>> PS: Se esses campos nunca podem ficar nulos, declare eles como not
r>> null, isso inclusive ajudaria vc achar erros na logica que podem
r>> exigir.

r>> Qual a versao do Firebird?

r>> []s
r>> Carlos H. Cantu
r>> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
r>> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

r>>> Boa tarde

r>>> CREATE TRIGGER TR_ORDEM_DETAILFISCAL FOR DETAILFISCAL
r>>> ACTIVE BEFORE INSERT POSITION 0
r>>> AS 
r>>> BEGIN 
r>>> NEW.ORDEM = GEN_ID(GEN_ORDEM, 1); 
r>>> NEW.DATAHORA = CURRENT_TIMESTAMP; 
r>>> END
r>>> ;

r>>> A trigger esta dessa forma.

r>>> Grato

r>>> Enviado do Email para Windows 10

r>>> De: Carlos H. Cantu via lista
r>>> Enviado:sexta-feira, 29 de janeiro de 2021 14:48
r>>> Para: FireBase
r>>> Cc:Carlos H. Cantu
r>>> Assunto: Re: [firebase-br] RES: RES: Erro em trigger

r>>> Faça backup/restore e veja se restaura sem erros.

r>>> O gfix não consegue detectar erros lógicos, por exemplo, um campo "not null" estar null.

r>>> E verifique também se na base o trigger está ativo.

r>>> []s
r>>> Carlos H. Cantu
r>>> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
r>>> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

r>>>> Bom dia Cantu, obrigado pela resposta

r>>>> A principio, fiz o teste com gfx

r>>>> gfix -validate -full C:\Comercial\DMLoja\Recupera\DADOS1.fdb
r>>>> gfix -mend -full -ignore C:\Comercial\DMLoja\Recupera\DADOS1.fdb
r>>>> gfix -validate -full C:\Comercial\DMLoja\Recupera\DADOS1.fdb
r>>>> gfix -mend -full -ignore C:\Comercial\DMLoja\Recupera\DADOS1.fdb
r>>>> gfix -validate -full C:\Comercial\DMLoja\Recupera\DADOS1.fdb
r>>>> gfix -mend -full -ignore C:\Comercial\DMLoja\Recupera\DADOS1.fdb
r>>>> gfix -validate -full C:\Comercial\DMLoja\Recupera\DADOS1.fdb
r>>>> gfix -mend -full -ignore C:\Comercial\DMLoja\Recupera\DADOS1.fdb

r>>>> em nenhum desses comandos retornou erro.

r>>>> Aparentemente a base não esta corrompida.

r>>>> Isso já me aconteceu em outros bancos com outros clientes em outras tabelas e campos.

r>>>> Acredito que tenha um baita bug no firebird ai.


r>>>> Enviado do Email para Windows 10

r>>>> De: Carlos H. Cantu via lista
r>>>> Enviado:sexta-feira, 29 de janeiro de 2021 12:08
r>>>> Para: FireBase
r>>>> Cc:Carlos H. Cantu
r>>>> Assunto: Re: [firebase-br] RES: Erro em trigger

r>>>> GEN_ORDEM é chave primaria? Se sim, não pode estar nula. Se vc
r>>>> encontrou algum registro onde esse campo está nulo, sendo ele uma PK,
r>>>> então seu banco deve estar corrompido.

r>>>> Não vejo problema no código do trigger. Verifique o banco com o gfix e
r>>>> faça também um backup/restore para valida-lo.

r>>>> []s
r>>>> Carlos H. Cantu
r>>>> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
r>>>> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

rvl>>>>> So pra completar a NEW.ORDEM = GEN_ID(GEN_ORDEM, 1);  

rvl>>>>> Também tem vários que estão como null.

rvl>>>>> Grato

rvl>>>>> Enviado do Email para Windows 10

rvl>>>>> De: rodrigo via lista
rvl>>>>> Enviado:sexta-feira, 29 de janeiro de 2021 10:58
rvl>>>>> Para: FireBase
rvl>>>>> Cc:rodrigo
rvl>>>>> Assunto: [firebase-br] Erro em trigger

rvl>>>>> Bom dia,

rvl>>>>> Nessa trigger, quando o registro é gravado ele teria que colocar automaticamente
rvl>>>>> A data e a hora.
rvl>>>>> Mas em muitos registros está como null

rvl>>>>> CREATE TRIGGER TR_ORDEM_DETAILFISCAL FOR DETAILFISCAL
rvl>>>>> ACTIVE BEFORE INSERT POSITION 0
rvl>>>>> AS  
rvl>>>>> BEGIN  
rvl>>>>> NEW.ORDEM = GEN_ID(GEN_ORDEM, 1);  
rvl>>>>> if (NEW.DATAHORA IS NULL) THEN   
rvl>>>>> NEW.DATAHORA = CURRENT_TIMESTAMP;  
rvl>>>>> END
rvl>>>>> ;

rvl>>>>> O que será que esta errado?

rvl>>>>> Grato




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




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




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




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






Mais detalhes sobre a lista de discussão lista