我正在尝试弄清楚如何用PL/pgSQL编写一个触发器函数,以便在嵌入式SQL/C程序中将值选择到主机变量中。我是SQL的新手,所以如果我的术语有点离题,我很抱歉。基本上,在对表进行更改时,我希望该函数触发一个视图,以便更新存储在主机变量中的值。
这是我创建并测试过的视图:
EXEC SQL CREATE VIEW idfound AS SELECT id, num FROM newtable WHERE id = 1;这就是我使用主机变量dbID和dbNum来命名视图的方式:
EXEC SQL SELECT * INTO :dbID, :dbNum FROM idfound;下面是我创建的触发器:
EXEC SQL CREATE idTrigger AFTER INSERT OR UPDATE ON newtable
FOR EACH ROW EXECUTE PROCEDURE idFunc();下面是我想要使用的触发器函数:
EXEC SQL CREATE FUNCTION idFunc() RETURNS TRIGGER AS $idTrigger$
BEGIN
SELECT * INTO :dbID, :dbNum FROM idfound;
END;
$idTrigger$ LANGUAGE plpgsql;出于测试目的,我使用的是pgAdmin III。当我更改函数以执行任何不使用主机变量的操作(例如更新预定义行中的值)时,我可以看到它已创建。但是,我无法让它使用主机变量创建触发器或触发器函数。
现在,我只是试图弄清楚如何在一般情况下实现这一点,所以我意识到我目前的代码实际上并没有做太多事情。一般的想法是,我希望我的触发器函数调用一个使用C语言主机变量的预定义视图。如果有更好的实现触发器的方法,该建议也将非常受欢迎。
https://stackoverflow.com/questions/16799578
复制相似问题