【问题标题】:Firebird compute field value in trigger from queryFirebird 计算来自查询的触发器中的字段值
【发布时间】:2011-07-28 10:51:53
【问题描述】:

我正在尝试使此触发器起作用:

为 tbl_art 创建触发器 trig_tbl_art 在更新位置 0 之前激活 作为 开始 IF (NEW.e OLD.e) THEN 如果(新.f = 旧.f)那么 NEW.f = SELECT (NEW.e)*CAST(row_b AS NUMERIC(9,2)) FROM table_a WHERE row_a = 'someval'; 结尾

这个想法是仅在 tbl_art.e 发生变化时计算 tbl_art.f 的值。
NEW.f 应该是 NEW.e * [查询返回的值]

有什么帮助吗?

【问题讨论】:

    标签: triggers firebird precompute


    【解决方案1】:

    在 PSQL 中,您不能将查询结果直接分配给变量...这是因为查询可以返回多个列,但您可以在 select 语句中使用 into 子句:

    SELECT (NEW.e)*CAST(row_b AS NUMERIC(9,2)) FROM table_a  WHERE row_a = 'someval'
     into NEW.f;
    

    您有责任确保查询只返回一行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 2011-11-16
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 2013-05-20
      相关资源
      最近更新 更多