0

我尝试在 HsqlDB 中构建这个触发器,没有 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

为 VAR_IDIMM 选择正确的类型,使其与 IDIMMOBILI 列相同。使用最新的 HSQLDB 2.2.9。

于 2012-09-21T09:08:56.250 回答