postgresql - 在 postgresql 中创建表分区的权限继承
问题描述
我有具有特殊权限集的分区表:
CREATE TABLE public.paritioned_table (
_time int8 NULL,
...
) PARTITION BY RANGE (_time);
-- 权限
GRANT ALL ON TABLE public.paritioned_table TO someuser;
我有一个创建分区的触发器:
_partition := 'paritioned_table_' || to_char(to_timestamp(_time),'YYYY_MM');
IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname = _partition) THEN
RAISE NOTICE 'A partition has been created %', _partition;
select extract(epoch FROM date_trunc('month', to_timestamp(_time))) into _from;
select extract(epoch FROM date_trunc('month', to_timestamp(_time)) + INTERVAL '1 MONTH') into _to;
execute 'CREATE TABLE ' || _partition || ' PARTITION OF paritioned_table FOR VALUES FROM (' || _from || ') TO (' || _to || ')';
END IF;
问题是新创建的分区不继承父故事权限。所以我的问题-创建具有权限继承的分区的最佳做法是什么
解决方案
使用每次运行的触发器INSERT
来检查是否需要创建分区会降低一些性能。_time
另外,如果有人输入-100000000000 ,您是否希望创建一个分区?
但是对于您的问题:分区是它们自己的表,并且没有关于继承权限或存储参数的规定。你有两个选择:
向触发器添加
GRANT
语句。发出一条
ALTER DEFAULT PRIVILEGE
语句,为所有新创建的表(可能仅限于一个模式)设置默认权限。
推荐阅读
- menu - 如何使网站菜单项在特定组中不可见?
- php - 无法在 Laradock 中安装 php7.2-ldap 扩展
- reactjs - 如何使用 React Router v4 将不正确的路由重定向到特定页面
- r - 匹配第一个元素时,stringr 向量化失败
- php - pdo 查询重复更新,然后是两个删除的错误
- algorithm - 本例中 DFS 与 BFS 的区别?
- java - “错误的第一个参数类型。找到:'android.widget.Compoundbutton.oncheckedchangelistener',需要:'android.content.context'”
- c# - 插入具有数据库中已存在的相关实体集合的实体
- javascript - Javascript .click() callback function apparently not called in Bootstrap accordion?
- android - XML 布局和软件按钮的问题