Triggers Firebird从查询中计算触发器中的字段值

Triggers Firebird从查询中计算触发器中的字段值,triggers,firebird,precompute,Triggers,Firebird,Precompute,我正试图让这个触发器工作: CREATE trigger trig_tbl_art for tbl_art active before update position 0 AS begin IF (NEW.e OLD.e) THEN IF (NEW.f = OLD.f) THEN NEW.f = SELECT (NEW.e)*CAST(row_b AS NUMERIC(9,2)) FROM table_a WHERE row_a = 'someval'; end 为tbl_

我正试图让这个触发器工作:

CREATE trigger trig_tbl_art for tbl_art active before update position 0 AS begin IF (NEW.e OLD.e) THEN IF (NEW.f = OLD.f) THEN NEW.f = SELECT (NEW.e)*CAST(row_b AS NUMERIC(9,2)) FROM table_a WHERE row_a = 'someval'; end 为tbl_艺术创建触发器触发tbl_艺术 更新位置0之前处于活动状态 作为 开始 如果(NEW.e OLD.e)那么 如果(NEW.f=OLD.f),则 NEW.f=从表_a中选择(NEW.e)*转换(行_b为数字(9,2)),其中行_a='someval'; 结束 其思想是仅当tbl_art.e发生变化时才计算tbl_art.f的值。
NEW.f应该是NEW.e*[查询返回的值]


有什么帮助吗?

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

SELECT (NEW.e)*CAST(row_b AS NUMERIC(9,2)) FROM table_a  WHERE row_a = 'someval'
 into NEW.f;
您负责确保查询只返回一行