Триггер HSQL с несколькими операторами when

Можем ли мы создать триггер в базе данных HSQL с несколькими предложениями WHEN. Что-то вроде этого :-

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) )
;

Этот запрос дает синтаксические ошибки. Какой будет правильный синтаксис?


person Kaushik Lele    schedule 17.11.2012    source источник


Ответы (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

person fredt    schedule 17.11.2012