2012-09-21 53 views
0

嗨HSQLDB DECLARE行的所有我試圖讓行構成了我在扳機選擇statemnt但我得到這個錯誤意外的標記,R在觸發器

  CREATE TRIGGER PUBLIC.TRIGGERNAME AFTER UPDATE ON  PUBLIC.CLIENTE_OFFERENTE 
      REFERENCING NEW ROW AS NUOVO 
       FOR EACH ROW 
        BEGIN ATOMIC 
        DECLARE r RECORD; 
        SET r=(SELECT offerta.IDIMMOBILE as ID, immobile.prezzomax as costo FROM PUBLIC.OFFERTA join immobile on immobile.idImmobile=offerta.idImmobile WHERE IDOFFERTA=NUOVO.IDOFFERTA); 
        IF NUOVO.STATO='Venduto'THEN 
        INSERT INTO PUBLIC.VENDITE(IDCLIENTE,IDIMMOBILE,COSTO)VALUES(NUOVO.IDCLIENTE,r.ID,r.costo); 
        END IF; 
        END 
+0

我在這裏只看到一個觸發器:all-caps標題觸發「嘆息,Facepalm」反應。 – 2012-09-21 10:21:39

回答

0

不能聲明記錄類型的變量。

您希望從您的select語句中獲取兩個值。因此你需要聲明兩個變量。

BEGIN ATOMIC 
    DECLARE VAR_ID INT; 
    DECLARE VAR_COSTO INT; 
    SET (VAR_ID, VAR_COSTO) =(SELECT offerta.IDIMMOBILE as ID, immobile.prezzomax as costo FROM PUBLIC.OFFERTA join immobile on immobile.idImmobile=offerta.idImmobile WHERE IDOFFERTA=NUOVO.IDOFFERTA); 
    IF NUOVO.STATO='Venduto'THEN 
     INSERT INTO PUBLIC.VENDITE(IDCLIENTE,IDIMMOBILE,COSTO)VALUES(NUOVO.IDCLIENTE,VAR_ID,VAR_COSTO); 
    END IF; 
END