Postgresql 触发器行不受影响

Postgresql trigger row not affected

我已经尝试在 table 调用产品上触发。插入产品后出现错误,"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();

pid 是你的主 ID 吗?不确定你想做什么,但我假设你想设置 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();