PostgreSQL相当于SQL Servfer的CONTEXT_INFO是什么?

问题描述 投票:3回答:1

关于我的另一个问题 "审计日志DELETEs的最佳方式是什么?". PostgreSQL相当于什么?CONTEXT_INFO?

我想使用触发器记录删除信息,但由于我没有使用数据库用户作为我的应用程序的逻辑用户,所以我不能记录下 CURRENT_USER 作为删除记录的用户从触发代码中删除。但是对于 INSERTUPDATE 可以从触发器中记录记录的变化,因为你可以在记录中添加一个用户字段,比如说 inserted_bylast_updated_by,并使用这些字段来记录到审计表。

postgresql logging rdbms audit dml
1个回答
2
投票

http:/www.postgres.czindex.phpPostgreSQL_SQL_Tricks_II#Any_other_session_variables

PostgreSQL提供了更多的变种,请大家看这个网站。


0
投票

公认的答案是过时的。

在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)
© www.soinside.com 2019 - 2024. All rights reserved.