什么是PostgreSQL相当于MSSQL的CONTEXT_INFO?

时间:2009-03-30 06:36:52

标签: postgresql logging rdbms audit dml

关于我的另一个问题"What’s the best way to audit log DELETEs?"。什么是PostgreSQL等同于CONTEXT_INFO?

[编辑]

我想使用触发器记录删除,但由于我没有将数据库用户用作我的应用程序的逻辑用户,因此我无法将触发器代码中的CURRENT_USER记录为删除记录的用户。但是对于INSERT和UPDATE,可以从触发器记录记录更改,因为您只需在记录中添加用户字段,比如inserted_by和last_updated_by,并使用这些字段登录审计表。

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

接受的答案已过时。

在最新版本的postgresql(我认为是9.3或9.4)中,可以设置/检索配置变量的操作仅在当前会话[或事务]中有效。 Documentation Reference

设置 session 变量的示例:

hal=# select set_config('myvar.foo', 'bar', false);
 set_config 
------------
 bar
(1 row)

hal=# select current_setting('myvar.foo');
 current_setting 
-----------------
 bar
(1 row)

可以使用功能current_setting,就像使用其他返回集合的功能一样。

示例:

create table customers (id int);
insert into customers values (1), (2), (3), (4);

select c.*, s.*
from customers c
left join current_setting('myvar.foo') s
       on c.id = length(s)