我应该如何在删除后将 userId(或其他参数)传递给 PSQL 触发器?

How should i pass a userId(or other parameter) to PSQL trigger AFTER DELETE?

我想将一个参数传递给触发器函数,该函数在删除我的数据库中的实体记录后调用。有什么办法可以在应用程序级别上做到这一点?有使用"SET"操作的解决方案吗?或者,也许我可以向同一个事务添加一个参数,用于删除操作?

这里有几个选择。
1、可以设置application_name环境变量为用户名,然后在触发器中获取。 2、可以将table扩展一列,在insert/update/delete语句中将用户名发送到数据库。

SET application_name = 'user name';

-- in the trigger:

SELECT application_name FROM pg_stat_activity WHERE pid = pg_backend_pid();

ALTER TABLE t ADD COLUMN user_name text;

-- and in the trigger (depending on context):

my_user := NEW.user_name;
or
my_user := OLD.user_name;