【问题标题】:Select * query for granted columns in postgres选择 * 查询 postgres 中的授权列
【发布时间】:2017-11-02 15:29:46
【问题描述】:

我使用

在 postgres 中为表的某些列授予只读用户权限
grant select(col1,col2) on mytable to read_only_user;

我想用

SELECT * FROM  mytable

来自 read_only_user 的查询。但是我在输出中被拒绝了权限。我不想为此创建视图。但不知何故,我希望 select * 查询适用于该用户(没有明确告诉像 select col1,col2 from mytable 这样的列是什么)。

帮帮我。提前谢谢...

【问题讨论】:

  • 您是否也授予对架构的使用权限? stackoverflow.com/questions/760210/…
  • 我可以使用“从 mytable 中选择 col1,col2”这个查询并且它正在工作。但我想选择 * 查询。-@NPras
  • 啊,对不起,我误会了。因此,如果您有col1..5,您希望该特定用户在执行SELECT * 时只显示col1, col2?我不相信这在 postgre(或我知道的任何其他人)中是可能的。
  • select * 表示您希望查看所有列 - 但是您没有权限查看所有列。
  • @a_horse_with_no_name 实际上 Npras 明白了我的意思。你知道有什么方法吗?如果我在 50 列中有 30 列,那么每次我需要在查询中写入所有允许的列名。这就是我问这个的原因

标签: postgresql


【解决方案1】:

你不能这样做,你不应该尝试。

SELECT * 不应该在代码中使用,它只用于临时查询。
有什么问题:

  • 如果表定义发生变化,您的程序将会中断。
  • 您可能会检索到不必要的列,这将导致处理不必要的数据,并可能使 PostgreSQL 无法选择更好的执行计划。

【讨论】:

    猜你喜欢
    • 2011-11-12
    • 2011-11-12
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 2020-10-31
    相关资源
    最近更新 更多