首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >授予对系统表的更新

授予对系统表的更新
EN

Stack Overflow用户
提问于 2019-09-26 13:54:03
回答 1查看 270关注 0票数 0

我正在制作软件,允许用户对存储在PostgreSQL数据库中的数据进行CRUD操作。我只能访问视图,不能在桌子上工作--这是一个技术假设。

我创建的软件需要从数据库中获取有关列在指定视图中是否为空的信息。

我正在使用pg_attribute表中attnotnull列中的数据获取有关字段的空性的信息。

默认情况下,所有'attnotnull‘列值都设置为false。因此,我的软件并不表示需要字段。

我的想法是手动更改这些数据,但正如我前面提到的,我使用的是RDS,我不能作为超级用户登录。我试图将pg_attribute表上的UPDATE权限授予我的用户,但是我得到了“拒绝权限”错误。

是否有任何方法允许更新RDS上的系统表?

EN

回答 1

Stack Overflow用户

发布于 2019-09-26 15:42:47

请不要乱搞目录..。

PostgreSQL中的视图只不过是一个带有ON SELECT DO INSTEAD规则的表。因此,作为解决办法,您可以首先创建一个表,然后将其转换为视图:

代码语言:javascript
复制
CREATE TABLE to_view (
   c1 integer NOT NULL,
   c2 text,
   c3 inet NOT NULL
);

CREATE RULE "_RETURN" AS ON SELECT TO to_view DO INSTEAD
SELECT 42 AS c1,
       'string' AS c2,
       INET '127.0.0.1' AS c3;

SELECT attname,
       attnotnull
FROM pg_attribute
WHERE attrelid = 'to_view'::regclass
  AND attnum > 0
ORDER BY attnum;

 attname | attnotnull 
---------+------------
 c1      | t
 c2      | f
 c3      | t
(3 rows)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58118397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档