我尝试在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$
答案 0 :(得分: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。