2012-11-17 2 views
0

Можно ли создать триггер в базе данных HSQL с несколькими предложениями WHEN. Что-то вроде этого: -Триггер 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 обычно используется с простым условием для вызова триггера только при необходимости.

Для более сложных условиях использовать случай или если условие:

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

Смежные вопросы