当前位置:  数据库>oracle

Oracle用户的单张表的读写权限控制

    来源: 互联网  发布时间:2017-05-27

    本文导语: 在Oracle数据库的用户下,一张表需要做读写控制,只能读和写,不能删除和修改。开发人员开始想从用户权限上去实现。 经过一番讨论,判读从权限上去实现该需求是不合适的。 这个用户下很多表,根本不会被一个人控制的。...

在Oracle数据库的用户下,一张表需要做读写控制,只能读和写,不能删除和修改。开发人员开始想从用户权限上去实现。

经过一番讨论,判读从权限上去实现该需求是不合适的。

这个用户下很多表,根本不会被一个人控制的。用户本身有一个权限组resource,可以对其下所有表进行增删改查。

如果要用权限来实现,那么就得将这个组去掉。这样,该用户下的其他表就得一个一个授权。还得考虑到以后新建的表。如何处理又是个问题。

因此,判断该解决方式不合适。

这种单独一张表的读写控制,不知道审计能不能实现。我想到一种另外的控制方法,让表只能读写,不能删改。这个方法就是利用触发器。

在表的每一行纪录进行增删改之前做判断,如果是增,则不做任何处理,如果是删除或者修改,直接rollback。

这样就实现了这种读写控制。

触发器代码如下:

create or replace trigger trg_test_insert_select
  before insert or  update or  delete on t_test 
  for each row
declare
  -- local variables here
begin
    CASE
    WHEN INSERTING THEN
      DBMS_OUTPUT.PUT_LINE('Inserting');
    WHEN UPDATING THEN
      DBMS_OUTPUT.PUT_LINE('Updating');
      rollback;
    WHEN DELETING THEN
      DBMS_OUTPUT.PUT_LINE('Deleting');
      rollback;
  END CASE;

end trg_test_insert_select;

测试结果如下:

SQL> insert into t_test(a) select sysdate from dual;
 
1 row inserted
 
SQL> commit;
 
Commit complete
 
SQL> delete from t_test;
 
delete from t_test
 
ORA-04092: ROLLBACK 不能在触发器中
ORA-06512: 在 "SCOTT.TRG_TEST_INSERT_SELECT", line 12
ORA-04088: 触发器 'SCOTT.TRG_TEST_INSERT_SELECT' 执行过程中出错
 
SQL> update t_test set a=sysdate+1;
 
update t_test set a=sysdate+1
 
ORA-04092: ROLLBACK 不能在触发器中
ORA-06512: 在 "SCOTT.TRG_TEST_INSERT_SELECT", line 9
ORA-04088: 触发器 'SCOTT.TRG_TEST_INSERT_SELECT' 执行过程中出错
 
注意,在应用开发时,需要将这个表的操作进行封装,异常捕获很重要。

推荐阅读:

Oracle中的角色和权限授予

Oracle收集用户的权限

Oracle权限总结

Oracle查询指定用户有权限的所有表

修改文件目录权限导致数据库连接报错ORA-12547 


    
 
 

您可能感兴趣的文章:

  • 再问ORACLE中long的读写问题?
  • 在CentOS5.3下运行oracle10g(10.2.0.4)速度慢,硬盘读写慢
  • php开源软件 iis7站长之家
  • oracle的blob类型读写文件,help me
  • java读写oracle的blob字段示例
  • oracle中读写blob字段的问题解析
  • oracle 视图权限 oracle 创建视图权限不足
  • linux下安装oracle,出现没有权限的报警,怎么解决?
  • Oracle 权限管理入门
  • 求救:HPUNIX下的ORACLE7执行select * from tablename提示权限不足!!
  • Linux下安装Oracle 10G提示“bad interpreter: 权限不够”的解决
  • Oracle创建用户权限的过程
  • oracle9i在linux9上安装的权限问题!在线等候!
  • Oracle 10g创建表空间和用户并指定权限
  • Oracle 低权限数据库账户得到 OS 访问权限 提权利用
  • 一个关于JAVA操作oracle数据库时UPDATE权限的问题
  • Oracle 10g各个帐号的访问权限、登录路径、监控状态命令查询等等
  • Linux系统中Oracle数据库的用户权限
  • Oracle内置角色connect与resource的权限
  • Oracle删除当前用户下所有表的方法适用于有或没有删除权限
  • oracle用户权限管理使用详解
  • 实现Oracle数据库的存储过程中拥有“role”权限
  • 巧用Oracle系统账户默认口令来提升权限
  • oracle 9i Linux 下安装时出现 无法建立inventory目录,你可能没有相应权限,请高手帮忙,100分,在线等!
  • 入侵Oracle服务器进一步获取权限
  • Oracle 用户权限管理方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在HP Unix 下Oracle的控制和管理
  • Oracle控制文件多元化处理
  • Oracle10g 控制台启动端口修改
  • Oracle中存取控制介绍
  • Oracle并购SUN应放松对MySQL控制
  • Oracle中虚拟专用数据控制方法研究
  • Linux平台下启动oracle 11g EM控制台
  • Oracle 入门之控制文件multiplex
  • 手工创建Oracle数据库控制文件的策略
  • Oracle备份的控制文件和新的数据文件
  • Oracle控制文件的损坏或完全丢失的恢复办法
  • Oracle数据操作和控制语言详解
  • DB2和 Oracle的并发控制(锁)的比较
  • Oracle中基于hint的3种执行计划控制方法详细介绍
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,