nik*_*iks 6 postgresql stored-procedures transactions
我在 Postgresql 中有一个包含 COMMIT 语句的存储过程,我希望用户只能访问此过程,而不授予他们选择、插入等的权利。在函数中,我将使用 SECURITY DEFINER,但来自官方文档 https:// www. postgresql.org/docs/11/sql-createprocedure.html:
SECURITY DEFINER 过程无法执行事务控制语句(例如 COMMIT 和 ROLLBACK,具体取决于语言)。
据我了解,这意味着我无法使用 SECURITY DEFINER,并且必须授予用户存储过程中所需的任何权限以允许用户执行它,这完全违背了仅允许用户使用函数或过程的整个目的。
如何调用其中包含 COMMIT 语句的存储过程,而不需要对过程内的所有语句进行单独授权?
您可以向特定过程授予权限,以便用户只能拥有该过程的事务控制权限。
GRANT ALL ON PROCEDURE <procedure_name> TO <role>;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13874 次 |
| 最近记录: |