我正试图让这个触发器工作:
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_art.e改变时才计算tbl_art.f的值 NEW.f应为NEW.e * [查询返回的值]
请帮忙吗?
答案 0 :(得分:2)
在PSQL中,您无法将查询结果直接分配给变量...这是因为查询可以返回多个列,但您可以在select语句中使用into子句:
SELECT (NEW.e)*CAST(row_b AS NUMERIC(9,2)) FROM table_a WHERE row_a = 'someval'
into NEW.f;
您有责任确保查询只返回一行。