ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 细粒度访问控制-视图

细粒度访问控制-视图

原创 Linux操作系统 作者:hjianping 时间:2011-04-26 19:49:53 0 删除 编辑

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/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 九九乘法表
请登录后发表评论 登录
全部评论

注册时间:2011-04-24

  • 博文量
    80
  • 访问量
    72800