问题:如何在选择查询 postgreSQL 中使用变量

所以这是我的问题,

我有一个程序:

    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» 不存在

LINE 3: SELECT * FROM cells WHERE battery_serial u003d serialVar

解答

您必须将值传递给动态 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。)

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐