[firebase-br] Triggers
Sandro Souza
escovadordebits em gmail.com
Quarta Fevereiro 23 12:17:56 -03 2022
Bom dia/tarde/noite.
1 - Note que você tem dois valores na cláusula SELECT, e portanto, teria
que ter 2 (duas) variáveis na cláusula INTO, porém você só informou uma
única variável.
2 - Da forma que está esse SELECT, ele pode retornar mais de uma
linha/registro, e dessa forma, pode gerar uma exceção/erro em tempo de
execução.
3 - Procure sempre evitar usar o tipo DOUBLE PRECISION, porque ele é apenas
uma aproximação de um número, e não garante exatidão. Prefira usar o tipo
NUMERIC e sempre no dialeto 3, pois serão armazenados como inteiros
internamente, garantindo a maior precisão possível.
Poderia modificar para a seguinte forma:
AS
DECLARE VARIABLE AUX DOUBLE PRECISION;
DECLARE VARIABLE QTDE DOUBLE PRECISION;
BEGIN
FOR SELECT NEW.CODIGO, SUM(NEW.QTDE)
FROM ITENS
GROUP BY NEW.CODIGO
INTO :AUX, :QTDE DO
BEGIN
/* Código de tratamento de AUX e QTDE... */
END
END
Dúvida 1: Essa trigger é da própria tabela ITENS?
Dúvida 2: Não vi qualquer cláusula WHERE relacionando a tabela ITENS com a
tabela dessa trigger. É para ser assim mesmo?
Espero ter ajudado mais que atrapalhado. :D
Em ter., 22 de fev. de 2022 às 12:09, UPSAI | Informática via lista <
lista em firebase.com.br> escreveu:
> Prezados
>
> Solicito ajuda para a seguinte ocorrência:
>
> Temos uma tabela chamada PEDIDOS e outra ITENS DO PEDIDO.
>
> Criamos a seguinte trigger:
>
> AS
> declare variable aux double precision;
> begin
> select NEW.codigo, sum(NEW.qtde) from ITENS
> group by NEW.codigo
> INTO :AUX;
> end
>
> Estamos recebendo a seguinte mensagem de erro:
>
> can't format message 13:896 -- message file C:\firebird.msg not found.
> Dynamic SQL Error.
> SQL error code = -104.
> Cannot use an aggregate function in a GROUP BY clause.
>
>
> Saudações,
> Wagner Aranha
>
>
> ______________________________________________
> 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
>
Mais detalhes sobre a lista de discussão lista