要记录PostgreSQL数据库中的表数据更改,我在表ON UPDATE和ON INSERT上创建了触发器,但是除了更改内容之外我想知道谁更改了它,但站点代码使用了一个" DB用户& #34;连接到DB,我可以通过CURRENT_USER变量获取。如何将一些参数("站点用户"名称)附加到数据库会话,以便稍后我可以在触发器功能中的DB中获取它。在网站上我使用SQLAlchemy。
答案 0 :(得分:2)
很抱歉我正在回答我的问题,但我找到了另一个解决方案 使用自定义选项http://www.postgresql.org/docs/9.3/static/runtime-config-custom.html
在postgresql.conf中添加
如果版本> = 9.2
site.user = NULL
如果版本< = 9.1
custom_variable_classes = 'site'
site.user = NULL
然后在交易范围
SELECT SET_CONFIG('site.user', 'user name', true);
...
SELECT INTO site_user CURRENT_SETTING('site.user');
答案 1 :(得分:0)
本地无法用PostgreSQL做到这一点。一个选项可能是修改数据库连接代码(客户端),以便在每次连接时在数据库会话中设置该信息:
CREATE TEMPORARY TABLE active_user (site_user VARCHAR);
INSERT INTO active_user (site_user) VALUES (?);
然后在你的触发器中:
...
DECLARE site_user VARCHAR;
...
SELECT INTO site_user site_user FROM active_user
...