代表 table 所有者创建分区
create partition on behalf of table owner
我正在从不拥有父 table 的用户那里寻找在 PostgreSQL 数据库中创建新分区的方法。
但是,我经常遇到“错误:必须是 table 的所有者”
我试过这样的方法:
- 直接创建从当前用户到拥有 table 的用户的分区 – 提到的错误 ☹
- 在 table 所有者模式上创建存储过程 – 将过程执行授权给另一个用户(我想从中创建一个分区) – 尝试调用该过程(从应该创建分区的用户)和同样的错误 ☹
那么解决我的挑战的正确方法是什么。
PS。我来自 Oracle 世界,刚刚开始发现 PostgreSQL 权限模型。所以可能是我缺少特权。
Create stored procedure on table owner schema
这种方法应该有效。
grant execution on procedure to another user
这还不够。只是通过函数调用做一些事情不会影响权限检查,它们仍然适用于当前角色。影响权限的过程需要设置 SECURITY DEFINER
option. (Check the tips 才能正确执行)。
我正在从不拥有父 table 的用户那里寻找在 PostgreSQL 数据库中创建新分区的方法。 但是,我经常遇到“错误:必须是 table 的所有者” 我试过这样的方法:
- 直接创建从当前用户到拥有 table 的用户的分区 – 提到的错误 ☹
- 在 table 所有者模式上创建存储过程 – 将过程执行授权给另一个用户(我想从中创建一个分区) – 尝试调用该过程(从应该创建分区的用户)和同样的错误 ☹
那么解决我的挑战的正确方法是什么。
PS。我来自 Oracle 世界,刚刚开始发现 PostgreSQL 权限模型。所以可能是我缺少特权。
Create stored procedure on table owner schema
这种方法应该有效。
grant execution on procedure to another user
这还不够。只是通过函数调用做一些事情不会影响权限检查,它们仍然适用于当前角色。影响权限的过程需要设置 SECURITY DEFINER
option. (Check the tips 才能正确执行)。