使用HSQL和Spring Script Utils创建触发器或过程

时间:2015-04-18 11:24:27

标签: spring triggers hsqldb procedure populate

出于某种原因,当我尝试执行初始化数据库和表的测试时,这会不断弹出。我使用的是Spring 4.1.2.RELEASE

尝试创建触发器时:

Caused by: java.sql.SQLException: Unexpected end of command: REFERENCING

触发器的代码是:

CREATE TRIGGER subscriber_created_at BEFORE INSERT ON subscriber
REFERENCING new ROW AS newrow
FOR EACH ROW BEGIN ATOMIC
    IF newrow.dateCreated IS NULL
    THEN SET newrow.dateCreated = NOW();
    END IF;
END;/;

然后在搜索SO之后,如果发现这个链接告诉OP如何修复它并且仅用于测试,看看我是否可以得到不同的错误,它尝试了OP的代码并得到了相同的错误。 / p>

该程序的代码是:

 CREATE PROCEDURE p_recordTaskExecution(IN userTaskId BIGINT, 
 IN isSuccess BOOLEAN, 
 IN statusMessage VARCHAR(2000), 
 IN operationsPerformed BIGINT, 
 INOUT procedureStatus BOOLEAN) BEGIN ATOMIC
 IF userTaskId = 1 Then
      SET procedureStatus = true; 
 ELSE
      SET procedureStatus = false;
 END IF;
 END; /;

尝试创建程序时:

Caused by: java.sql.SQLException: Unexpected token: PROCEDURE in statement [CREATE PROCEDURE]

为了进行测试,我在xml中编辑了我的代码,当它到达单词subscriber时切断了commnad:

<jdbc:script location="classpath:/input_data/createTriggers.sql" separator="subscriber" />

它确实切断了!我得到的错误是:

 Unexpected token:  in statement [CREATE TRIGGER ]

我真的很难过。还有其他人遇到过这个吗?

1 个答案:

答案 0 :(得分:1)

最后得到了这个问题的答案

HSQLDB Trigger Statement ERROR when using SimpleJdbcTestUtils.executeSqlScript()

原来我必须将hsqldb更新为2.3.2。

出于某种原因,当我google hsqldb maven时,弹出的第一个项目是1.8版本。我认为这是最新的。我的坏。