2015-01-11 2 views
0

테이블 호출 제품에서 트리거를 만들려고했습니다. 제품을 삽입 한 후에 오류가 발생하면 "NEW"변수가 아직 영향을받지 않습니다. 여기Postgresql 트리거 행이 적용되지 않음

트리거 및 사용자 defind 기능입니다 :

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

가 기본 ID를 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();