我在一个表中有一个数据集如下,我正在寻找一种方法来限制基于列和数据集的选择权限,或者有一种方法可以从当前上下文中了解调用者堆栈。
表x:
- Id年龄类型
- 1 AGE1男性
- 2 age2。女性
- 3 Age3。男
- 4 Age4。女性 表杨:
- Id大小
- 1 Size1
- 2 Size2 3 size3
- 4 size4
对于用户x:如果数据集是女性,我需要用户x读取表y和表x,如果数据集是女性,我需要用户x读取表y和表x而不需要年龄。
我的观点:男性查询
Select * from table y inner join table x on y.Id = x.id
Where x.Type = 'male'
女性查询
Select y.*, x.id, x.type from table y inner join table x on y.Id = x.id
Where x.Type = 'female'
知道在上面的视图中,我需要授予对表y和x的访问权限,因为开发人员对相同的用户x使用相同的表x。
或者我可以使用角色,但需要知道是否从视图或表执行堆栈。
在Security Role中:如果呼唤的是女性观点,则在年龄上否认其他允许*
感谢如果我理解正确的话想要你想要实现,我认为这就是解决方案:
select y.*, x.id, x.type, IIF(x.type = 'female', -1, x.age) age
from tabley y
join tablex x on y.Id = x.id
这将显示-1年龄为"女性"记录