0

HsqlDBでこのトリガーを構築しようとすると、SELECTステートメントがなくても正常に機能しますが、selectステートメントを入力すると、予期しないトークンが発生しました:FROM required:INTO

 CREATE TRIGGER PUBLIC.TRIGGERNAME AFTER UPDATE ON PUBLIC.CLIENTE_OFFERENTE 
 REFERENCING NEW ROW AS NUOVO 
     FOR EACH ROW 
           BEGIN ATOMIC 
               IF NUOVO.STATO='Venduto'
                              THEN
                              (SELECT IDIMMOBILE AS IDIMM FROM OFFERTA WHERE IDOFFERTA=NUOVO.IDOFFERTA); 
                            INSERT INTO PUBLIC.VENDITE(IDCLIENTE,IDIMMOBILE)VALUES(NUOVO.IDCLIENTE,IDIMM);END IF;END$
4

1 に答える 1

0

通常の SELECT ステートメントは、何もしないため、ここでは使用できません。

次のようなものが必要です。

BEGIN ATOMIC 
    DECLARE VAR_IDIMM INT;
    IF NUOVO.STATO='Venduto' THEN
        SELECT IDIMMOBILE INTO VAR_IDIMM FROM OFFERTA WHERE IDOFFERTA=NUOVO.IDOFFERTA; 
        INSERT INTO PUBLIC.VENDITE(IDCLIENTE,IDIMMOBILE)VALUES(NUOVO.IDCLIENTE,VAR_IDIMM);
    END IF;
END

IDIMMOBILI 列と同じになるように、VAR_IDIMM の正しいタイプを選択してください。最新の HSQLDB 2.2.9 を使用してください。

于 2012-09-21T09:08:56.250 に答える