2013-03-06 2 views
0

나는 여러 테이블에서 사용하고자하는 다음과 같은 트리거가 있습니다. 그래서, 어떻게 각 테이블에 대해 하나의 트리거를 갖는 대신 작동하도록 할 수 있습니까?postgresql에서 동적 테이블 이름 사용 트리거

BEGIN 
    IF (TG_OP = 'UPDATE') THEN 
     UPDATE test_table set rel_label = (select SUBSTR(release, 1, 5)) where uid=OLD.uid; 
     RETURN OLD; 
    ELSIF (TG_OP = 'INSERT') THEN 
     UPDATE test_table set rel_label = (select SUBSTR(release, 1, 5)) where uid=OLD.uid; 
     RETURN NEW; 
    END IF; 
    RETURN NULL; -- result ignored since is an AFTER TRIGGER 
END; 

으로합니다.

+0

각 트리거에 대해 'test_table'이름을 변경 하시겠습니까? –

+0

타원형. 나는 테이블 이름을 지정하지 않고 모든 테이블에 대해 트리거가 작동하도록하고 싶습니다. –

답변

0

스트레이트 솔루션을 찾아 냈습니다.

BEGIN 
    IF (TG_OP = 'INSERT') THEN 
       NEW.rel_label = (select SUBSTR(NEW.release, 1, 5)); 
       RETURN NEW; 
    ELSIF (TG_OP = 'UPDATE') THEN 
       NEW.rel_label = (select SUBSTR(NEW.release, 1, 5)); 
       RETURN NEW; 
    END IF; 
      RETURN NULL; 

END; 
+0

그건 내 질문에 목표로했다;) –

0

EXECUTE 명령에 대한 설명서를 참조하십시오.

관련 문제