在PostgreSQL中我使用dblink_exec
。有没有办法每次dblink
执行时都可以记录?
答案 0 :(得分:1)
我不知道一种简单的方法,比如在PostgreSQL中记录一些函数的配置设置。 (如果有人这样做,我感兴趣!)
你可以破解函数的来源,在每次调用时发出通知并重新编译。
或者,如果您对C的了解像我一样生锈,那么您可以以非常小的性能成本将函数包装在plpgsql函数中,该函数在调用dblink_exec之前或之后引发通知/警告。像这样:
CREATE OR REPLACE FUNCTION mydblink_exec(text)
RETURNS text AS
$$
RAISE NOTICE 'My text. Called with: "%"', $1;
RETURN dblink_exec($1);
$$
LANGUAGE plpgsql VOLATILE STRICT;
您可以将原始dblink_exec()
函数移动到其他名称或架构,以使其成为替代品。只有你必须这样做。见下文。
小心覆盖所需的所有形式的dblink_exec()。我quote the manual:
dblink_exec(text connname, text sql [, bool fail_on_error]) returns text
dblink_exec(text connstr, text sql [, bool fail_on_error]) returns text
dblink_exec(text sql [, bool fail_on_error]) returns text
您可以使用function overloading 如果您实际上将原始函数移动到自定义名称/模式,请小心升级到新版本的PostgreSQL或重新安装dblink contrib模块。