3

所以这是我的问题,

我有一个程序:

    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

4

1 回答 1

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只会显示cellswhere battery_serial = 1。这是你想要的吗?(下一个插入或任何将重新创建视图,可能使用不同的battery_serial.)

于 2012-12-07T13:14:10.023 回答