RES: RES: [firebase-br] Problema Com Alteração / Criação de Trigger
Ivan Guimarães Meirelles
igmeirelles em gmail.com
Seg Ago 20 08:05:22 -03 2007
Olá Marcos...
Olhando novamente sua lógica... "acho" que o problema deve ocorrer quando vc
executa um delete na tabela PAGAMENTOCLIENTES, pois vc utiliza um select q
tenta fazer alteração no campo NEW.VALORANTERIOR, porém se vc está excluindo
esse campo não poderá ser alterado... vc não tem acesso ao New (novo) valor
desse campo, porque se trata de uma exclusão. Não existe NEW em exclusão.
Bem coloquei "acho" entre aspas porque não testei... apenas analisei a
lógica, faça um teste com um IF separado para o delete sem o select...
Veja se dá certo assim:
CREATE TRIGGER PAGAMENTOCLIENTES_AIUD0 FOR PAGAMENTOCLIENTES
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 0 AS
Begin
IF (DELETING) THEN
UPDATE CLIENTES SET DEBITO = COALESCE(DEBITO,0) + OLD.VALOR
WHERE ID = OLD.CLIENTE;
ELSE IF (UPDATING) THEN
BEGIN
UPDATE CLIENTES SET DEBITO = COALESCE(DEBITO,0) +
OLD.VALOR WHERE ID = OLD.CLIENTE;
SELECT DEBITO FROM CLIENTE WHERE ID = NEW.CLIENTE
INTO NEW.VALORANTERIOR;
END;
ELSE IF (INSERTING) THEN
UPDATE CLIENTES SET DEBITO = COALESCE(DEBITO,0) - NEW.VALOR
WHERE ID = NEW.CLIENTE;
End
----------------------------------------------------------------------------
-----
Um abraço.
Ivan Guimarães Meirelles
Três Lagoas/MS - igmeirelles em gmail.com
Mais detalhes sobre a lista de discussão lista