gpt4 book ai didi

postgresql - SELECT * 当禁止访问某些列时

转载 作者:行者123 更新时间:2023-11-29 14:29:36 25 4
gpt4 key购买 nike

我有一个表 tbl,其中包含列级授权,其中列 ab 可供所有人读取,但列 c 仅可由某些角色读取。

目前,对于非特权用户,SELECT * FROM tbl 失败并出现 ERROR: permission denied for relation c。有什么方法可以让语句只返回列 ab 而不是失败吗?

我知道通常不鼓励使用 SELECT *,但是这个表被数据科学家使用,他们直接在 SQL 中或通过连接到表的各种工具进行大量即席查询。

我知道我可以创建 View ,但表格比示例复杂得多。有 20-30 列具有不同的角色访问组合,因此至少会产生同样多的 View 。

最佳答案

您可以在此表之上定义一个 View :

CREATE VIEW tbl_view AS (
SELECT a, b
FROM tbl
)

然后,让数据科学家使用 SELECT * 访问此 View 。我假设在实践中有更多的列,而不仅仅是 ab。这里的想法是,您完成了拼写允许的列的繁重工作,因此您的消费者不必为此担心。

关于postgresql - SELECT * 当禁止访问某些列时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53655088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com