[firebase-br] Trigger para Valor Negativo

Ricardo Ferreira Sobrinho ricardoif em gmail.com
Seg Jan 28 16:02:33 -03 2008


Saudçõess a todos!


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

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

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

------------------------------------------------
SET SQL DIALECT 3;

SET NAMES ISO8859_1;

SET TERM ^ ;


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

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

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

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

SET TERM ; ^
------------------------------------------------

1. declaro a variavel totalVenda

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


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

-- 
Cordialmente,

Ricardo Ferreira Sobrinho



Mais detalhes sobre a lista de discussão lista