[英]Using host variables in a PL/pgSQL trigger functions
我试图弄清楚如何在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语言中的宿主变量的预定义视图。如果有更好的实现触发器的方法,那么也将不胜感激。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.