如何在PostgreSQL中通过SQL设置与获取当前连接的应用名称?
在PostgreSQL中实现类似ADS的应用ID设置与获取
修改当前连接的application_name
PostgreSQL中直接使用SET命令即可修改当前连接的application_name,语法如下:
SET application_name = :appname;
这和你在ADS中调用sp_SetApplicationID的效果一致,设置后该值会在pg_stat_activity的对应连接记录中显示。
获取当前连接的application_name
通过current_setting函数可以直接获取当前连接的application_name:
SELECT current_setting('application_name');
模拟ADS的存储过程(适配原有代码)
如果希望保持和原有ADS代码一致的调用方式,可以创建对应的存储过程/函数:
- 创建模拟
sp_SetApplicationID的存储过程:
CREATE OR REPLACE PROCEDURE sp_SetApplicationID(p_appname text) LANGUAGE plpgsql AS $$ BEGIN EXECUTE format('SET application_name = %L', p_appname); END; $$;
调用方式和ADS一致:
CALL sp_SetApplicationID(:appname);
- 创建模拟
sp_GetApplicationID的函数(更贴合ADS返回值的用法):
CREATE OR REPLACE FUNCTION sp_GetApplicationID() RETURNS text LANGUAGE plpgsql AS $$ BEGIN RETURN current_setting('application_name'); END; $$;
调用方式:
SELECT sp_GetApplicationID();
这样你可以最小化迁移时的代码改动,同时实现和ADS相同的功能。
内容的提问来源于stack exchange,提问作者Ivan Yuzafatau
相关产品推荐
相关产品推荐

