2012-11-17 36 views
0

我們可以使用多個WHEN子句在HSQL DB中創建觸發器嗎?類似這樣的: -具有多個條件的HSQL觸發條款

CREATE TRIGGER perosn_trig AFTER UPDATE ON person 
REFERENCING NEW AS nwrow OLD as oldrow 
FOR EACH ROW 
    when (nwrow.person_id>100) 
    (insert into TRIGLOG values ('PERSON_more_than_100',nwrow.person_id,SYSDATE) ), 
    When (nwrow.person_id<=100) 
    (insert into TRIGLOG values ('PERSON_less_than_100',nwrow.person_id,SYSDATE)) 
; 

此查詢給出語法錯誤。 什麼將是正確的語法?

回答

1

目前在觸發器中不支持多個WHEN子句。 WHEN子句通常與簡單的條件一起使用,僅在必要時調用觸發器。

對於更復雜的條件下使用一個或CASE IF條件:

CREATE TRIGGER perosn_trig AFTER UPDATE ON person 
REFERENCING NEW AS nwrow OLD as oldrow 
FOR EACH ROW 
BEGIN ATOMIC 
    IF (nwrow.person_id>100) THEN 
    insert into TRIGLOG values ('PERSON_more_than_100',nwrow.person_id,SYSDATE); 
    ELSE 
    insert into TRIGLOG values ('PERSON_less_than_100',nwrow.person_id,SYSDATE); 
    END IF; 
END 

http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#src_psm_conditional