2013-11-09 2 views
1
CREATE TRIGGER myTrigger AFTER UPDATE ON myTable 
    WHEN old.field <> 1 
    BEGIN 
     UPDATE myTable... 
    END; 

WHEN 조건을 여러 개 추가하려면 어떻게합니까? 마찬가지로WHEN 여러 조건?

CREATE TRIGGER myTrigger AFTER UPDATE ON myTable 
    WHEN old.field <> 1 
    BEGIN 
     UPDATE myTable... 
    END; 
    ELSE WHEN old.field = 1 
    BEGIN 
     UPDATE myTable... 
    END;  

두 개의 별도 트리거를 만들어야합니까? 더 빠른 길은 없습니까?

+2

친애하는, 모르겠지만 내 방아쇠가 작동하지 않으므로 내 답변을 삭제하므로 불쾌한 정보를 전달하고 싶지 않습니다. 좋은 하루 되세요;) –

답변

2

당신은 이런 식으로 작업을 수행 할 수 있습니다

CREATE TRIGGER myTrigger AFTER UPDATE ON myTable 
BEGIN 
    UPDATE myTable... WHERE old.field <> 1 AND ... 
    UPDATE myTable... WHERE old.field = 1 AND ... 
END;  

나는 일반적으로 최적화로 항상 스마트 계획을 생성하지 못할 수 있습니다 것이 좋습니다 않을 것이다하지만

.

+0

오른쪽 행을 업데이트 할 것이라고 생각하지 않습니다. – thelolcat

+0

무엇을 의미합니까? 원래의 UPDATE 문에서 WHERE 조건을 취하여 WHERE 절에 WHEN 조건을 추가 조건으로 추가합니다. 의미 상으로 동일합니다. – Fabian

+0

그러나 where 조건은 old.field 값을 현재 찾은 행이 아닌 현재 찾은 행에서 확인합니다. 이 트리거가 다른 행에 다른 트리거를 트리거 할 때 어떤 일이 발생합니까? – thelolcat