PostgreSQL - Python - 触发器 - 访问current_user

时间:2017-10-12 17:44:31

标签: python python-3.x postgresql triggers plpython

我正在plPython中编写审计触发器。我无法弄清楚如何访问current_user变量。它是以某种方式通过plpy提供的吗?

我还想知道是否可以将变量传递给触发函数?如果是这样,这是怎么做到的?我试过了:

create trigger stock_sys_audit before insert or update or delete on stock_tbl
FOR EACH ROW EXECUTE PROCEDURE sys_audit(current_user);

但它不起作用。

感谢。

1 个答案:

答案 0 :(得分:2)

您只能通过SQL访问所有Postgres功能和设置。使用plpy.execute(),示例:

create or replace function py_current_user()
returns text language plpython3u
as $$
    res = plpy.execute("select current_user")
    return res[0]["current_user"]
$$;

select py_current_user();

 py_current_user 
-----------------
 postgres
(1 row)