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