5

关于我的另一个问题“审计日志删除的最佳方法是什么?” . PostgreSQL 相当于CONTEXT_INFO什么?

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

4

2 回答 2

2

http://www.postgres.cz/index.php/PostgreSQL_SQL_Tricks_II#Any_other_session_variables

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

于 2009-03-30T08:58:43.813 回答
1

接受的答案已过时。

在 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)
于 2020-05-15T04:54:44.563 回答