【问题标题】:HSQLDB Trigger - Referencing new tableHSQLDB 触发器 - 引用新表
【发布时间】: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(引用新表)?

标签: sql triggers hsqldb


【解决方案1】:

这对于用 SQL 编写的触发器是不可能的。

【讨论】:

  • HSQL 扩展了 SQL,我想我在某处读到它基本上是 Java 类。所以我认为这会以某种方式起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
相关资源
最近更新 更多