2015-01-30 5 views
0

도움이 필요합니다. 나는 SQL에 익숙하지 않고 원하는 모든 것은 테이블에 sex = 'F'과 INSERT를 사용할 때 열 (est)을 업데이트하는 방아쇠이다. 가능한가? 내 DBMS는 PostgreSQL입니다.PostgreSQL의 트리거

이 코드를 사용해 보았지만 올바르지 않습니다. 이 힌트를 얻고 있습니다 : SELECT의 결과를 무시하려면 대신 PERFORM을 사용하십시오.

CREATE FUNCTION tEst() RETURNS TRIGGER AS $$ 
    BEGIN 
     SELECT * FROM Peop; 
     IF Peop.est = 'A' AND Peop.sex = 'F' THEN 
     UPDATE Peop SET est = 'B'; 
     END IF; 
     RETURN NULL; 
    END; 
$$ LANGUAGE plpgsql; 

CREATE TRIGGER myTrigger AFTER INSERT ON Peop 
FOR EACH ROW 
EXECUTE PROCEDURE tEst(); 

INSERT INTO Peop (name, sex) VALUES ('Mary', 'F'); 

기본적으로 est 열의 값은 'A'입니다. 미리 감사드립니다.

답변

2

간단한 작업이지만 BEFORE INSERT OR UPDATE 행 트리거를 사용해야합니다. 가능성이 있습니다

  • 관련된 (삽입 된, 업데이트 된, 삭제 된) 행의 데이터에 대한 정보를 얻습니다.
  • 테이블에 저장 될 데이터를 수정하십시오.

귀하의 예 : related plpgsql documentation

에서

CREATE FUNCTION tEst() RETURNS TRIGGER AS $$ 
BEGIN 
    IF NEW.est = 'A' AND NEW.sex = 'F' THEN 
    NEW.est = 'B'; 
    END IF; 
    RETURN NEW; 
END; 

CREATE TRIGGER tEst_trg BEFORE INSERT OR UPDATE ON peop 
FOR EACH ROW EXECUTE PROCEDURE tEst(); 

당신이 볼 수있는 더 많은 예제