使用 HSQL 和 Spring Script Utils 创建触发器或过程
Posted
技术标签:
【中文标题】使用 HSQL 和 Spring Script Utils 创建触发器或过程【英文标题】:Creating a trigger or procedure using HSQL and Spring Script Utils 【发布时间】:2015-04-18 11:24:26 【问题描述】:由于某种原因,当我尝试执行将初始化数据库和表的测试时,它会不断弹出。我正在使用 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 的代码并得到了同样的错误。
程序的代码是:
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 中编辑了我的代码,以在到达单词订阅者时切断命令:
<jdbc:script location="classpath:/input_data/createTriggers.sql" separator="subscriber" />
它确实被切断了!我得到的错误是:
Unexpected token: in statement [CREATE TRIGGER ]
我真的很难过。有没有其他人遇到过这种情况?
【问题讨论】:
【参考方案1】:终于得到了这个SO问题的答案
HSQLDB Trigger Statement ERROR when using SimpleJdbcTestUtils.executeSqlScript()
原来我必须将 hsqldb 更新到 2.3.2。
由于某种原因,当我google hsqldb maven时,弹出的第一个项目是1.8版本。我以为那是最新的。我的错。
【讨论】:
以上是关于使用 HSQL 和 Spring Script Utils 创建触发器或过程的主要内容,如果未能解决你的问题,请参考以下文章
java.sql.SQLException:使用 HSQL 和 Spring 不支持此函数
在内存数据库中嵌入 HSQL 的 Spring DataSource 和 Linux 上的休眠创建-删除排序