[firebase-br] Trigger para Valor Negativo

Carlos H. Cantu (TeamFB) listas em warmboot.com.br
Seg Jan 28 17:17:06 -03 2008


Porque não fazer a checagem na propria tabela VENDEDOR, através de uma
check constraint?

[]s
Cantu (Membro do TeamFB - FireBase)
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br

RFS> Saudçõess a todos!


RFS> Sou novato e durante os meus estudos encontrei o seguinte problema:

RFS> Em um TRIGGER que a cada INSERÇÃO/EXCLUSÃO da venda na tabela PEDIDOS,
RFS> atualiza o valor Total vendido por um vendedor. É preciso levantar uma
RFS> EXCEÇÃO quando esse valor for negativo.

RFS> Diante do problema, encontrei a solução abaixo:

RFS> ------------------------------------------------
RFS> SET SQL DIALECT 3;

RFS> SET NAMES ISO8859_1;

RFS> SET TERM ^ ;


RFS> CREATE OR ALTER TRIGGER UPD_VENDA FOR PEDIDO
RFS> ACTIVE AFTER INSERT OR DELETE POSITION 0
RFS> AS
RFS>     DECLARE VARIABLE totalvenda NUMERIC(10,2) = 0;
RFS> BEGIN
RFS>     IF (INSERTING) THEN
RFS>         UPDATE vendedor
RFS>             SET total_venda = total_venda + NEW.valor_pedido
RFS>             WHERE id_vendedor = NEW.id_vendedor;

RFS>     IF (DELETING) THEN
RFS>     BEGIN
RFS>         UPDATE vendedor
RFS>             SET total_venda = total_venda - OLD.valor_pedido
RFS>                 WHERE id_vendedor = OLD.id_vendedor;

RFS>         SELECT total_venda
RFS>         FROM vendedor
RFS>         WHERE id_vendedor = OLD.id_vendedor
RFS>         INTO totalvenda;

RFS>         IF (totalvenda < 0) THEN
RFS>             EXCEPTION valor_negativo;
RFS>     END
RFS> END
RFS> ^

RFS> SET TERM ; ^
RFS> ------------------------------------------------

RFS> 1. declaro a variavel totalVenda

RFS> 2. no Deleting, incluo dentro do BEGIN END o SELECT e a condicao IF THEN


RFS> Gostaria de saber a opnião de vocês à respeito.






Mais detalhes sobre a lista de discussão lista