HSQLDB 触发器 - 引用新表
Posted
技术标签:
【中文标题】HSQLDB 触发器 - 引用新表【英文标题】:HSQLDB Trigger - Referencing new table 【发布时间】:2014-07-31 12:39:29 【问题描述】:我有以下表格(简体)
table A (
id,
fingerprint)
table B (
a_id,
value)
我有以下触发器
CREATE TRIGGER "makeFingerPrint" AFTER INSERT ON "B"
FOR EACH STATEMENT
UPDATE "A" SET
fingerprint = (select sum(value) from "b" where a_id = id)
WHERE fingerprint IS NULL
这适用于初始插入并确保 A 的“指纹”列为 NULL。
我尝试做的是引用新表(所有行)并使用这些更新,但我没有找到如何引用该新表的方法。
我试图找到一些东西,但没有运气,引用新表并做
CREATE TRIGGER makeFingerPrint AFTER INSERT ON "B"
REFERENCING NEW TABLE AS newTable (with and without quotes)
FOR EACH STATEMENT
UPDATE "A" SET
fingerprint = (select sum(value) from "b" where a_id = id)
WHERE id IN (select a_id from "newTable")
我总是收到错误“用户缺少权限或找不到对象:newTable”
有什么想法吗?甚至可以以某种方式查询引用表?
【问题讨论】:
我认为您唯一的选择是为此使用行级触发器。 我的解决方法对我来说很好,但我需要观察它(如果我想重新计算,请将列重置为 NULL)。那么,在什么情况下有TABLE(引用新表)? 【参考方案1】:这对于用 SQL 编写的触发器是不可能的。
【讨论】:
HSQL 扩展了 SQL,我想我在某处读到它基本上是 Java 类。所以我认为这会以某种方式起作用。以上是关于HSQLDB 触发器 - 引用新表的主要内容,如果未能解决你的问题,请参考以下文章
HSQLDB 触发器语法 - 不可能在触发器内进行子查询吗?