banco de dados
CREATE [ OR REPLACE ] trigger nome_do_gatilho AFTER | BEFORE evento ON nome_da_tabela [ FOR EACH ROW ] [ WHEN ( condição ) ]
DECLARE
Declarações
BEGIN
Comandos
EXCEPTION
Rotinas_de_exceção
END;
CREATE OR REPLACE trigger controla_preco BEFORE insert or update OF est_precovenda ON estoque FOR EACH ROW
BEGIN
if :new.est_precovenda not between 100 and 200 then raise_application_error(-20001,'Nao foi possivel gravar este produto, o valor encontrase abaixo do minimo que é R$ 100,00'); else dbms_output.put_line('Produto gravado com sucesso'); end if;
END controla_preco;
CREATE OR REPLACE trigger controla_preco BEFORE insert or update OF est_precovenda ON estoque FOR EACH ROW when (not new.est_precovenda not between 100 and 200)
BEGIN
raise_application_error(-20001,'Nao foi possivel gravar este produto, o valor encontrase abaixo do minimo que é R$ 100,00 e maximo R$ 200,00');
END controla_preco;
/
CREATE OR REPLACE TRIGGER "BAIXA_ESTOQUE" after insert or update or delete OF ven_quantidade ON Venda
FOR EACH ROW begin if inserting then update estoque set est_quantidade = est_quantidade -:new.ven_quantidade where est_codigo = :new.ven_codprod; elsif deleting then update estoque set est_quantidade = est_quantidade +:old.ven_quantidade where est_codigo = :old.ven_codprod; elsif updating then update estoque set est_quantidade = est_quantidade +:old.ven_quantidade where est_codigo = :old.ven_codprod; update estoque set est_quantidade = est_quantidade -:new.ven_quantidade where est_codigo = :new.ven_codprod; end if; end; update venda set ven_quantidade = 5 where ven_codigo = 3; select * from estoque; select *