代表 table 所有者创建分区

create partition on behalf of table owner

我正在从不拥有父 table 的用户那里寻找在 PostgreSQL 数据库中创建新分区的方法。 但是,我经常遇到“错误:必须是 table 的所有者” 我试过这样的方法:

  1. 直接创建从当前用户到拥有 table 的用户的分区 – 提到的错误 ☹
  2. 在 table 所有者模式上创建存储过程 – 将过程执行授权给另一个用户(我想从中创建一个分区) – 尝试调用该过程(从应该创建分区的用户)和同样的错误 ☹

那么解决我的挑战的正确方法是什么。

PS。我来自 Oracle 世界,刚刚开始发现 PostgreSQL 权限模型。所以可能是我缺少特权。

Create stored procedure on table owner schema

这种方法应该有效。

grant execution on procedure to another user

这还不够。只是通过函数调用做一些事情不会影响权限检查,它们仍然适用于当前角色。影响权限的过程需要设置 SECURITY DEFINER option. (Check the tips 才能正确执行)。