2013-08-21 2 views
1

모니터링해야하는 열을 어떻게 포함합니까? 나는. 모든 조건이 충족 될 때 트리거 당신이 원하는 여부에 따라 또는시 중 하나 조건 -여러 WHEN 조건이있는 트리거

CREATE TRIGGER freeradius.insert_into_day_summations 
    BEFORE INSERT ON freeradius.day_guiding_usage 
    FOR EACH ROW 
    WHEN (OLD.col1 IS DISTINCT FROM NEW.col1) 
    WHEN (OLD.col2 IS DISTINCT FROM NEW.col2) 
    WHEN (OLD.col3 IS DISTINCT FROM NEW.col3) 
EXECUTE procedure update_sessioninfo(); 
+0

를 사용할 수있다? 문서에서는 이것이 단지 불리언 조건이라고 말합니다. 잘 작동해야합니다. –

답변

4

양식 OR 또는 AND 단일 표현 : 대신 하나 개 WHEN 조건의 나는 3 개 WHEN 조건을 갖고 싶어 충족 됨 :

CREATE TRIGGER insert_into_day_summations 
BEFORE UPDATE ON freeradius.day_guiding_usage 
FOR EACH ROW 
WHEN (OLD.col1 IS DISTINCT FROM NEW.col1 
    OR OLD.col2 IS DISTINCT FROM NEW.col2 
    OR OLD.col3 IS DISTINCT FROM NEW.col3) 
EXECUTE procedure update_sessioninfo(); 

이는 단지 하나의 열에있을 필요가없는 부울 표현식입니다. 나는 the manual on CREATE TRIGGER을 인용 :

condition 

트리거 기능이 실제로 실행할지 여부를 결정하는 부울 식입니다.

그러나, 당신의 표현뿐만 아니라 INSERT를 들어, UPDATE에 대한 이해. 삽입의 경우 OLD 레코드가 존재하지 않습니다.
트리거 이름 자체는 스키마 규정을받을 수 없습니다. 한 번 더 설명서를 인용 :

이름

이름은 새로운 트리거를 제공합니다. 이것은 동일한 테이블에 대한 다른 트리거의 이름과 구별되어야합니다. 이름은 스키마 규정

굵게 강조 광산이 될 수 없습니다.

+0

고맙습니다. Erwin 작동합니다. – user2594853