在PostgreSQL中,我使用dblink_exec。有没有办法让我在每次执行dblink的时候都记录下来?
发布于 2011-10-20 04:19:13
我不知道像配置设置这样的简单方法来记录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()。I 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模块时要小心,如果您实际上将原始函数移动到自定义名称/模式的话。
https://stackoverflow.com/questions/7818528
复制相似问题