在firebird上获取触发事件

时间:2014-04-25 13:44:43

标签: sql triggers firebird

如何检测哪个事件在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怎么样?我可以这样做吗?

1 个答案:

答案 0 :(得分:2)

看看这里

if (inserting and new.id is null)
then new.id = gen_id(gen_partrec_id, 1);

请参阅:Multi-action triggers