【发布时间】:2019-10-03 17:12:13
【问题描述】:
我在 Postgresql 中有一个包含 COMMIT 语句的存储过程,我希望用户只访问这个过程而不赋予他们选择、插入等的权利。在函数中我会使用 SECURITY DEFINER,但来自官方文档https://www.postgresql.org/docs/11/sql-createprocedure.html :
SECURITY DEFINER 过程不能执行事务控制语句(例如,COMMIT 和 ROLLBACK,取决于语言)。
据我了解,这意味着我不能使用 SECURITY DEFINER 并且必须授予用户存储过程中所需的任何权限以允许用户执行它,这完全违背了仅允许用户使用函数或过程的整个目的。
如何在不单独授予过程中所有语句的情况下调用包含 COMMIT 语句的存储过程?
【问题讨论】:
标签: postgresql stored-procedures transactions