HSQL 触发意外令牌 NEW
Posted
技术标签:
【中文标题】HSQL 触发意外令牌 NEW【英文标题】:HSQL Trigger unexpected token NEW 【发布时间】:2016-04-06 08:44:16 【问题描述】:我有以下触发器,它取自一个正在工作的 Oracle:
create trigger D_DOCUMENT before delete on DOCUMENT
REFERENCING NEW AS newrow OLD AS oldrow
FOR EACH ROW
BEGIN ATOMIC
-- Further SQL
END;
现在在 HSQLDB 框架中运行。 我需要添加关键字 ATOMIC,但真正的症结在于 REFERENCING NEW 行。 当我运行它时,我得到以下异常:
Caused by: org.hsqldb.HsqlException: unexpected token: NEW
查看文档我真的不明白为什么这个令牌是意外的,所以我很困惑为什么这是抱怨“新”。 注释掉该行确实会导致“继续前进”的错误,但是似乎语法有问题,或者这是我偶然发现的一些错误。
有人用过这种类型的触发器吗?您可以发布一个示例删除触发器来尝试吗?
【问题讨论】:
您希望 hsqldb 与 Oracle 的产品特定存储过程兼容吗? 不,我没有,因此我已将其从原始规范修改为 HSQL。使用最新版本的 HSQL 可以做到这一点,所以问题就来了。 【参考方案1】:BEFORE DELETE 触发器中没有 NEW ROW。只有一个 OLD ROW 即将被删除。
错误表明了这一事实。
【讨论】:
谢谢@fredt,这就是答案。以上是关于HSQL 触发意外令牌 NEW的主要内容,如果未能解决你的问题,请参考以下文章
HSQL 触发器:用户缺少权限或找不到对象:NEWROW.ID
使用 HSQL 和 Spring Script Utils 创建触发器或过程
HSQL 触发器生成 SQL 错误:-458,SQLState: S1000 / java.lang.ArrayIndexOutOfBoundsException