Reputation: 7699
How to detect which event fired the trigger
in firebird
?
I know using postgres i can do something like this:
IF (TG_OP = 'INSERT') THEN
update produto set produtoquantidade = produtoquantidade - NEW.pedidoitemquantidade where produtocodigo = NEW.pedidoitemprodutocodigo AND produtoquantidade is not null;
ELSIF (TG_OP = 'DELETE') THEN
update produto set produtoquantidade = produtoquantidade + OLD.pedidoitemquantidade where produtocodigo = OLD.pedidoitemprodutocodigo AND produtoquantidade is not null;
ELSE
/* No UPDATE, verifica se o cara aumentou ou diminuiu a quantidade, nesse caso vai ter q diminuir ou aumentar o estoque, respectivamente. */
IF (NEW.pedidoitemquantidade > OLD.pedidoitemquantidade) THEN
/* O USUARIO AUMENTOU A QUANTIDADE DO ITEM */
update produto set produtoquantidade = produtoquantidade - (NEW.pedidoitemquantidade - OLD.pedidoitemquantidade) where produtocodigo = NEW.pedidoitemprodutocodigo AND produtoquantidade is not null;
ELSE
/* O USUARIO DIMINUIU A QUANTIDADE DO ITEM */
update produto set produtoquantidade = produtoquantidade + (OLD.pedidoitemquantidade - NEW.pedidoitemquantidade) where produtocodigo = NEW.pedidoitemprodutocodigo AND produtoquantidade is not null;
END IF;
END IF;
What about firebird
? Can i do something like this?
Upvotes: 0
Views: 349
Reputation: 10411
Have a look here
if (inserting and new.id is null)
then new.id = gen_id(gen_partrec_id, 1);
Upvotes: 2