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下批量将一个用户的所有表的select权限赋值给另外一个用户
		起因 为什么会有这篇文章呢? 因为最近在做项目的时候遇到一个问题...实际生产环境中程序datasource登陆的Oracle数据库用户user1不是我们创建的.这个用户没有访问我们业务表的权限(因为 ... 
- oracle给用户分配特定用户下特定表的只读权限
		以下是测试过程,测试环境oracle 11.2.0.3 linux平台: 模拟将HR用户下的employees表的只读权限非配给test_ycr创建用户:SQL> create user tes ... 
- Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)
		版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ... 
- linux下非root用户获得/dev/ttyUSB0的读写权限
		首先查看/dev/ttyUSB0的权限属性,在终端输入: ll /dev/ttyUSB0 teashaw@xiaopeiqing.com:~$ ll /dev/ttyUSB0 crw-rw—- 1 r ... 
- oracle  用户 多个表空间
		首先,授权给指定用户. 一个用户的默认表空间只能有一个,但是你可以试下用下面的语句为其授权在别的表空间中创建对像: alter user username quota 0||unlimited on ... 
- Sqlserver------SQLServer2008R2中新增用户并设定表的访问权限
		在进行项目对接时,有时候处于系统安全性考虑,我们需要设置数据库的访问权限,这个时候,我们可以新增一个用户,然后设定用户的访问权限,具体步骤如下: 1, 新建登录对象 2, 点击用户映射 3, 操 ... 
- 联盟链FISCO BCOS权限控制一览
		FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ... 
- 浅谈Yii-admin的权限控制
		说到CMS,最需要有的东西就是权限控制,特别是一些复杂的场景,多用户,多角色,多部门,子父级查看等等.最近在开发一个线下销售的东东,这个系统分为管理员端,省代端,客户端,门店端,销售端, 部门端,部门 ... 
- JAVAEE——BOS物流项目10:权限概述、常见的权限控制方式、apache shiro框架简介、基于shiro框架进行认证操作
		1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n ... 
随机推荐
- 淘宝主搜索离线集群完成Hadoop 2
			淘宝搜索离线dump集群(hadoop&hbase)2013进行了几次重大升级,本文中将这些升级的详细过程.升级中所遇到的问题以及这些问题的解决方案分享给大家.至此,淘宝主搜索离线集群完全进入 ... 
- HDU 5319 Painter (模拟)
			题意: 一个画家画出一张,有3种颜色的笔,R.G.B.R看成'\',B看成'/',G看成这两种的重叠(即叉形).给的是一个矩阵,矩阵中只有4种符号,除了3种颜色还有'.',代表没有涂色.问最小耗费多少 ... 
- js屏弊错误
			<SCRIPT language=javascript> <!-- window.onerror=function(){return true;} // --> </SC ... 
- 最大熵模型 Maximum Entropy Model
			熵的概念在统计学习与机器学习中真是很重要,熵的介绍在这里:信息熵 Information Theory .今天的主题是最大熵模型(Maximum Entropy Model,以下简称MaxEnt),M ... 
- php排序测试
			对 http://www.cnblogs.com/kudosharry/articles/2521621.html 这个补充的调用系统sort()函数的测试结果 1000个随机数: 直接插入排序:时间 ... 
- Oracle 11g对大表中添加DEFAULT值的NOT NULL字段速度有大幅度的提升
			在一张2000万的表上增加了一个字段并字段一个默认值,执行这条语句(alter table tablename add new_col default ‘col’)一个小时没有执行完,问我有没有其他解 ... 
- JVM——类加载器的双亲委派模型
			类加载器双亲委派模型,如下图所示: 双亲委派模型的工作过程 如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此 ... 
- python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)
			*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ... 
- webpack的学习
			什么是webpack? 他有什么优点? 首先对于很多刚接触webpack人来说,肯定会问webpack是什么?它有什么优点?我们为什么要使用它?带着这些问题,我们来总结下如下: Webpack是前端一 ... 
- android学习视频(实战项目演练)
			1.基于Android平台实战无线点餐系统(客户端(Client)和服务端(Server))①http://kuai.xunlei.com/d/xmBrDwI8CAAyXVFRa3d②http://k ... 
