2017-03-01 80 views
0

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

..这是我试图执行代码:

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

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

您的代码正在更新“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// 
+0

我知道我的代码正在更新所有行“COSTES”我triying把一个触发器,看看它的工作原理,但我仍然得到同样的错误与您的代码:CREATE TRIGGER“T1” AFTER UPDATE ON“ DesgloseCostes“ REFERENCING NEW ROW AS NEWROW FOR EACH ROW BEGIN ATOMIC update”Costes“set”importenoiva“= NEWROW。”importe“; END // –

+0

嗨,现在我试图更新我的hsqldb版本的OpenOffice,但我认为它不工作或即时通讯做错了什么:( –

+1

您需要使用“外部”HSQLDB dtabase。 :?//forum.openoffice.org/en/forum/viewtopic.php p = 162653#p162653 – fredt

相关问题