细粒度访问控制-视图

1、在视图中内嵌decode/case函数实现对列的屏蔽
create or replace view cls_emp
as
select empno,ename,deptno,decode(ename,USER,sal,null) sal
from emp;

使用替代触发器执行DML操作
create or replace trigger cls_emp_sal_update
instead of update on cls_emp
for each row
begin
 if :old.sal is not null then
  update emp set sal=:new.sal where ename=:new.ename;
 end if;
end;
/


2、在视图中植入PL/SQL函数实现对列的屏蔽
create or replace function view_filter(v_user in varchar2)
return number
as
begin
 if (v_user=USER or sys_context('userenv','isdba')='TRUE') then
  return 1;
 else
  return 0;
 end if;
end;
/

create or replace view cls_filter_emp
as
select * from emp
where 1=view_filter(ename);

结果相同,性能较好
create or replace view cls_filter_emp2
as
select * from emp
where 1=decode(ename,user,1,0)
or sys_context('userenv','isdba')='TRUE';


3、在视图中使用应用上下文实现对列的屏蔽
create or replace view cls_edit
as
select * from emp
where ename=sys_context('userenv','session_user')
with check option;


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17012874/viewspace-693803/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17012874/viewspace-693803/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值