[firebase-br] RES: [Firebase-br] Trigger com Erro

Rodrigo A. de Freitas rodrigo em solucoeseinformatica.com.br
Seg Maio 25 08:59:30 -03 2009


Edinho,

Pela mensagem, sua trigger está entrando em loop. Você escreveu uma trigger
no after update da tabela funcionário_trabalhadas, e dentro da trigger está
disparando um update na mesma tabela.

[]'s

Rodrigo A. de Freitas
Análise & Desenvolvimento

Soluções & Informática

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Edinho
Enviada em: 23 de maio de 2009 21:41
Para: lista em firebase.com.br
Assunto: [firebase-br] [Firebase-br] Trigger com Erro

Olá pessoal, estou montando uma trigger aqui e to tendo alguns problemas,
nao tenho certeza se estou fazendo da maneira certa, a trigger compila, mas
qnd ela é ativada ocorre um erro, bom dexa eu explicar o que quero fazer:

Eu tenho uma tabela, na qual guardo as informaçoes de um funcionario, horas
que ele trabalhou:

hora entrada,
hora saida,
horas que trabalhou,

basicamente, esses sao os campos, oque eu queria é que quando o funcionario
saisse, fosse feito o calculo das qtde de horas que ele trabalhou, pra isso,
montei a seguinte trigger:

CREATE OR ALTER trigger funcionario_trabalhadas_au0 for
funcionario_trabalhadas
active after update position 0
AS
declare variable trabalhadas numeric (18,0);
declare variable entrada timestamp;
declare variable saida timestamp;
begin
  if (new.functrab_codigo <> old.functrab_codigo) then
    exception usuario_trocado;
    else begin
        select funcionario_trabalhadas.functrab_horaentrada from
funcionario_trabalhadas
        where funcionario_trabalhadas.functrab_codigo = new.functrab_codigo
        into :entrada;
        select funcionario_trabalhadas.functrab_horasaida from
funcionario_trabalhadas
        where funcionario_trabalhadas.functrab_codigo = new.functrab_codigo
        into :saida;

        trabalhadas = udf_HoursBetween(:saida, :entrada);

        update funcionario_trabalhadas set
funcionario_trabalhadas.functrab_trabhora = :trabalhadas
        where funcionario_trabalhadas.functrab_codigo = new.functrab_codigo;

        end
end

ela executa normalmente, porem qnd eu vou inserir algo na tabela, aconte
isso:

Too many concurrent executions of the same request.
Too many concurrent executions of the same request.
At trigger 'FUNCIONARIO_TRABALHADAS_AU0' line: 20, col: 9
At trigger 'FUNCIONARIO_TRABALHADAS_AU0' line: 20, col: 9
At trigger 'FUNCIONARIO_TRABALHADAS_AU0' line: 20, col: 9
At trigger 'FUNCIONARIO_TRABALHADAS_AU0' line: 20, col: 9
At trigger 'FUNCIONARIO_TRABALHADAS_AU0' line: 20, col: 9

Alguem pode me ajudar?

:s

Obrigado desde já!

-- 
- Edinho
-- Engenharia da Computação / 5º Termo
--- Araçatuba/SP
______________________________________________
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://firebase.com.br/pesquisa
Nenhum vírus encontrado nessa mensagem recebida.
Verificado por AVG - www.avgbrasil.com.br 
Versão: 8.5.339 / Banco de dados de vírus: 270.12.39/2133 - Data de
Lançamento: 05/25/09 08:16:00





Mais detalhes sobre a lista de discussão lista