我有一个表格,其中有一列我想阻止某些用户看到。我知道我应该能够使用 View 来做到这一点,即有一个排除特定列的 View ,并拒绝访问表但允许访问 View (注意,用户不需要能够更新表/ View )。
我确实但是想要允许对该字段进行相等查询。如:
SELECT * FROM some_table_or_view WHERE hidden_field = 'some_value';
澄清一下:
- 不应在一般查询中返回
hidden_field
值 - 应该可以在
hidden_field
值上运行带有约束(最好只有相等约束)的查询
这可能吗?
(编辑:如果在 Mysql 以外的 dbms 中有解决方案,我也很乐意听到)。
最佳答案
您可以创建一个存储过程,它会返回您允许它返回的所有字段,然后您可以将 hidden_value(过滤条件)作为参数传递。
禁止您的数据库用户访问该表,但允许他们调用存储过程。
当然,如果您对表有多种类型的查询,则您将不得不创建多个存储过程。但至少它解决了您的权利问题。
关于Mysql:允许查询否则无法访问的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10175472/