Jump to content

dev botao

Problema Com Trigger Firebird 2.5


gss200610
  • Este tópico foi criado há 3544 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

ola a todos tenho a seguinte trigger abaixo:

 

CREATE OR ALTER trigger rdb$pafr07 for pafr07
active before insert or update position 0
AS
begin
NEW.MD5= HASH ( COALESCE( RDB$GET_CONTEXT('USER_SESSION', 'USUARIO' ), '') || COALESCE( NEW.IDREG07 , 0 ) || 
COALESCE( NEW.IDVENDA , 0 ) || COALESCE( NEW.DATA ,  '  /  /    ' ) || COALESCE( NEW.TIPO , ''  ) || 
COALESCE( NEW.NROSERIE , ''  ) || COALESCE( NEW.MFADICIONAL , ''  ) || COALESCE( NEW.MODELOECF , ''  ) || 
COALESCE( NEW.NROUSUARIO , ''  ) || COALESCE( NEW.COO , ''  ) || COALESCE( NEW.CCF , ''  ) || COALESCE( NEW.GNF , ''  ) || 
COALESCE( NEW.MEIOPAGTO , ''  ) || COALESCE( NEW.VLPAGO , 0.00 ) || COALESCE( NEW.ESTORNO , ''  ) || 
COALESCE( NEW.VLESTORNO , 0.00 ) || COALESCE( NEW.TIPODOC , ''  ) || COALESCE( NEW.RECEBIMENTO , ''  ) || 
COALESCE( NEW.EXPORTADO , ''  ) || COALESCE( NEW.COD_CAI , 0 )  );
end;
 
ela é sempre executada quando qualquer operacao de insert ou update é feita. ate ai tudo bem. 
sempre que entro no programa rodo o comando  RDB$SET_CONTEXT('USER_SESSION', 'USUARIO' , 'TESTE')
 
os dados sao gravados normalmente, agora quando vou verificar os HASH como no comando abaixo, nao batem.
 
 
SELECT  MD5, HASH( COALESCE( RDB$GET_CONTEXT('USER_SESSION', 'USUARIO' ), '') || COALESCE( IDREG07 , 0 )||
COALESCE( IDVENDA , 0 )||COALESCE( DATA ,  '  /  /    ' )||COALESCE( TIPO , '' )||
COALESCE( NROSERIE , '' )||COALESCE( MFADICIONAL , '' )||COALESCE( MODELOECF , '' )||
COALESCE( NROUSUARIO , '' )||COALESCE( COO , '' )||COALESCE( CCF , '' )||COALESCE( GNF , '' )||
COALESCE( MEIOPAGTO , '' )||COALESCE( VLPAGO , 0.00 )||COALESCE( ESTORNO , '' )||COALESCE( VLESTORNO , 0.00 )||
COALESCE( TIPODOC , '' )||COALESCE( RECEBIMENTO , '' )||COALESCE( EXPORTADO , '' )||
COALESCE( COD_CAI , 0 ))MD5_ATUAL FROM PAFR07
 
MD5 = CAMPO DA TABELA GRAVADO COM A TRIGGER
MD5_ATUAL = CAMPO CALCULADO NA GERACAO
 
ja tentei de varias formas, ja mandei mostrar o valor da variavel GET_CONTEXT e esta certa.
isso acontece apenas com 2 duas tabelas, o mais estranho que uso mesmo procedimento em outras e funciona.
segue abaixo codigo de insert que uso no firebird 2.5:
 
 
UPDATE OR INSERT INTO PAFR07 ( IDVENDA,DATA,TIPO,NROSERIE,MFADICIONAL,MODELOECF,NROUSUARIO,COO,
CCF,GNF,MEIOPAGTO,VLPAGO,ESTORNO,VLESTORNO,TIPODOC,RECEBIMENTO,EXPORTADO,COD_CAI ) 
VALUES( :IDVENDA,:DATA,:TIPO,:NROSERIE,:MFADICIONAL,:MODELOECF,:NROUSUARIO,:COO,
:CCF,:GNF,:MEIOPAGTO,:VLPAGO,:ESTORNO,:VLESTORNO,:TIPODOC,:RECEBIMENTO,:EXPORTADO,:COD_CAI )
MATCHING( NROSERIE, COO, CCF, GNF, MEIOPAGTO )
 
quem tiver um dica e puder ajudar agradeço.

 

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...
  • Consultores

Muito provavelmente você está utilizando algum dado diferente dos dois testes.

Faça um log salvando o "string" que é passado para a função HASH ao inserir/alterar.

Depois compare esse "string" com o que você está utilizando para validar o hash.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • Este tópico foi criado há 3544 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...