如何检测哪个事件在trigger
中触发了firebird
?
我知道使用postgres我可以做这样的事情:
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;
firebird
怎么样?我可以这样做吗?
答案 0 :(得分:2)
看看这里
if (inserting and new.id is null)
then new.id = gen_id(gen_partrec_id, 1);