关于我的另一个问题"What’s the best way to audit log DELETEs?"。什么是PostgreSQL等同于CONTEXT_INFO?
[编辑]
我想使用触发器记录删除,但由于我没有将数据库用户用作我的应用程序的逻辑用户,因此我无法将触发器代码中的CURRENT_USER记录为删除记录的用户。但是对于INSERT和UPDATE,可以从触发器记录记录更改,因为您只需在记录中添加用户字段,比如inserted_by和last_updated_by,并使用这些字段登录审计表。
答案 0 :(得分:4)
http://www.postgres.cz/index.php/PostgreSQL_SQL_Tricks_II#Any_other_session_variables
PostgreSQL提供更多变种,请访问本网站。
答案 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)