这是我的问题,
我有一个程序:
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;
但是当该过程的触发器被激活时,我有一个错误提示:
ERROR: the column « serialvar » does not exist
LINE 3: SELECT * FROM cells WHERE battery_serial = 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
where battery_serial = 1
。这是你想要的吗? (下一个插入或其他内容将重新创建 View ,可能使用不同的 battery_serial
。)
关于postgresql - 如何在选择查询 postgreSQL 中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13763563/