2017-10-12 38 views
2

我在plPython中编写审计触发器。我无法弄清楚如何访问current_user变量。以某种方式通过plpy可用吗?PostgreSQL - Python - 触发器 - 访问current_user

我也想知道是否有可能将变量传递到触发器函数?如果是的话,这是如何做到的?我尝试过:

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

但它不起作用。

谢谢。

回答

1

您只能通过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)