关于我的另一个问题 "审计日志DELETEs的最佳方式是什么?". PostgreSQL相当于什么?CONTEXT_INFO
?
我想使用触发器记录删除信息,但由于我没有使用数据库用户作为我的应用程序的逻辑用户,所以我不能记录下 CURRENT_USER
作为删除记录的用户从触发代码中删除。但是对于 INSERT
和 UPDATE
可以从触发器中记录记录的变化,因为你可以在记录中添加一个用户字段,比如说 inserted_by
和 last_updated_by
,并使用这些字段来记录到审计表。
http:/www.postgres.czindex.phpPostgreSQL_SQL_Tricks_II#Any_other_session_variables
PostgreSQL提供了更多的变种,请大家看这个网站。
公认的答案是过时的。
在postgresql的最新版本中(我想是9.3或9.4以后),可以设置检索配置变量只对当前会话[或事务]有效。文档参考
设置的例子 会议 变量。
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)