尝试插入触发器以更新字段OpenOffice Base

时间:2017-03-01 12:09:54

标签: sql triggers hsqldb openoffice.org

我正在尝试在OpenOffice 4.1.3中从命令行插入一个触发器,我正在使用此配置: 工具 - >选项 - > OpenOffice - > Java - > “使用...”选中 - > classpath - >添加包 - > “从我这里下载的文件下载的文件(hsqldb.jar):Access2Base http://www.access2base.com/access2base.html

所以......这是我正在尝试执行的代码:

CREATE TRIGGER  "t1" AFTER UPDATE ON "DesgloseCostes"
FOR EACH ROW
BEGIN ATOMIC
update "Costes" set "importenoiva" = (NEW."importe");
END

这给我以下错误:

1: Unexpected end of command: BEGIN in statement [CREATE TRIGGER  "t1" AFTER UPDATE ON "DesgloseCostes"
FOR EACH ROW
BEGIN]

PS:我执行以下代码:工具 - > SQL ....

PS2:我在mysql中遇到了类似的问题,但我解决了它,将分隔符更改为//

这是一个示例代码:

CREATE TRIGGER  "t1" AFTER UPDATE ON "DesgloseCostes"
FOR EACH ROW
BEGIN ATOMIC
update "Costes" set "importenoiva" = (NEW."importe");
END//

感谢您的帮助!

this is where I'm putting the new hsqldb folder, but I had the same error, i tried to select this folder, the super folder, the super/super folder and tried to to just put the hsqldb/lib/hsqldb.jar file as package, but still nothing

我正在放置新的hsqldb文件夹,但我有同样的错误,我试图选择这个文件夹,超级文件夹,超级/超级文件夹,并试图只是把hsqldb / lib / hsqldb .jar文件作为包,但仍然没有

1 个答案:

答案 0 :(得分:1)

检查HSQLDB JAR版本并确保它晚于2.20版。触发器定义需要额外的一行REFERENCING ...

您的代码正在更新“Costes”表中的所有行。 UPDATE语句需要一个WHERE子句,其条件只能选择要更新的行。

CREATE TRIGGER  "t1" AFTER UPDATE ON "DesgloseCostes"
REFERENCING NEW ROW AS NEWROW
FOR EACH ROW
BEGIN ATOMIC
update "Costes" set "importenoiva" = NEWROW."importe" WHERE ... ;
END//