[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