0

複数の WHEN 句を使用して、HSQL DB でトリガーを作成できますか。このようなもの :-

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

このクエリは構文エラーを返します。正しい構文は何ですか?

4

1 に答える 1

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

于 2012-11-17T11:14:42.043 に答える