要对数据表进行授权,相应的角色只能查看授权内的数据:
假如对表“ 财务表 ”进行数据授权
角色A只能看2011,2012年的数据,则生成视图“财务表_角色A” (create view 财务表_角色A as select * from 财务表 where 年度 in (2011,2012))
角色B只能看2013年的数据,则生成视图“财务表_角色B” (create view 财务表_角色B as select * from 财务表 where 年度=2013)
要对财务表进行查询,则会根据当前用户拥有的角色使用相应的视图
假设原始的查询语句为 select * from 财务表,当拥有角色A的人员执行查询时,则会动态将“select * from 财务表”更改为“select * from 财务表_角色A”,但是如果当前人员拥有A和B两个角色时,这种方法就不合适,因为系统就不知道如何替换了,目前考虑的实现方案时将“select * from 财务表”更改为“select * from (select * from 财务表_角色A union select * from 财务表_角色B) 财务表”,但这种方式如果查询语句不仅仅是一条简单的Select语句,如果语句太过复杂的话进行替换时会比较容易出问题,有没有什么好的方法可以实现这种替换或者有更好的数据权限授权方式