我们可以在表格中创建隐藏列吗?只有在select语句中明确指定列名时才应列出它。
答案 0 :(得分:4)
您可以通过创建视图并仅选择要显示的列来有效地执行此操作。
答案 1 :(得分:3)
不,没有支持且安全的方法来创建仅在明确指定列名时列出的隐藏列。 PostgreSQL没有提供任何用户可访问的方法来隐藏*
通配符中的用户定义列。
但是,您可以使用您选择的任何用户界面层/查询构建器来执行此操作。
(PostgreSQL实际上确实隐藏了列,因为您会看到select ctid,xmin,xmax from some_table
,但它不允许用户添加到隐藏列的集合中。直接修改系统目录以欺骗PostgreSQl认为用户定义的列是一个隐藏的系统列,但是直接弄乱目录是一个非常糟糕的想法,所以我不会解释如何如果你坚持这样做,请阅读pg_attribute
上的文件......但要明白你正在创造一个巨大的脚枪。)。
你可以设置列权限,这样用户只能选择一些列,但你不能再说“除了这一列之外的全部”,你必须说“我希望他们能够看到这些“。
更新:@maybeWeCouldStealAVan有一个最明智的建议:你可能想要一个视图。把这个问题标记为正确,而不是我的。