Postgresql触发行不受影响

时间:2015-01-11 19:47:32

标签: sql postgresql triggers

我试图在表呼叫产品上触发。插入产品后,我收到一个错误,那就是" NEW"变量尚未受到影响。

这是触发器和用户定义功能:

CREATE OR REPLACE FUNCTION updateProduitQteInitiale() RETURNS TRIGGER AS $example_table$
    BEGIN
       IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN      
       UPDATE produit set qtestock= NEW.qteinitial where produit.pid = NEW.pid ; 
       return NEW ;
      END IF;
      RETURN NULL;
    END;
$example_table$ LANGUAGE plpgsql;

这是触发器:

CREATE TRIGGER qteInitialTrigger AFTER INSERT OR UPDATE  ON produit
FOR EACH ROW EXECUTE PROCEDURE updateProduitQteInitiale();

1 个答案:

答案 0 :(得分:1)

pid是你的主要身份吗?不知道你想做什么,但我想你想要从qteinitial列(在同一行!)上设置列qtestock值。如果我猜对了,你可以这样做:

CREATE OR REPLACE FUNCTION updateProduitQteInitiale() RETURNS TRIGGER AS $example_table$
BEGIN
  NEW.qtestock = NEW.qteinitial;     
  return NEW;
END;
$example_table$ LANGUAGE plpgsql;

CREATE TRIGGER qteInitialTrigger BEFORE INSERT OR UPDATE  ON produit
FOR EACH ROW EXECUTE PROCEDURE updateProduitQteInitiale();