所以这是我的问题,
我有一个程序:
DECLARE
serialvar INTEGER;
BEGIN
serialvar := NEW.battery_serial;
CREATE OR REPLACE VIEW battery_vue
AS
SELECT * FROM cells WHERE battery_serial = serialvar;
RETURN NEW;
END;
但是当该程序的触发器被激活时,我有一个错误说:
错误:列«serialvar»不存在
第3行:SELECT * FROM cells WHERE battery_serial = serialVar
答案 0 :(得分:1)
您必须将值传递给动态SQL,如
BEGIN
EXECUTE $$CREATE OR REPLACE VIEW battery_vue
AS
SELECT * FROM cells WHERE battery_serial = $$ || NEW.battery_serial;
RETURN NEW;
END;
这样您就可以获取新值,如果它是1(例如),那么battery_vue
将只显示cells
battery_serial = 1
。这是你想要的吗? (下一个插入或其他任何会重新创建视图,可能使用不同的battery_serial
。)