今天客户现场报了个数据库错误,ora01031 权限不足

既然人家oracle都说了权限不足,所以就从权限角度开始排产,结果怎么查权限设置也都没问题。

然后静下心来,透过现象看本质,问题能够定位,是对某个视图做update操作时报错,跟出sql语句在pl/sql中执行依然报权限不足。

编辑视图,看视图的写法,发现这是个复杂视图且视图里又套了其他视图,对于复杂视图通过触发器可以满足增删改,其实套视图业务所谓,也能实现增删改,

但关键是客户现场的程序视图里的内容是写死的,类似于select * from dual,对于dual自然就没有权限了。

通过分析问题,总结了一下oracle视图的增删改,语句如下:

/* 创建表TB1 */

create table TB1

(

P1 int,

P2 int

)

/* 表TB1插入数据 */

insert into TB1 (p1,p2) values (1,1);

insert into TB1 (p1,p2) values (2,2);

/* 创建表TB2 */

create table TB2

(

P3 int,

P4 int

)

/* 表TB2插入数据 */

insert into TB2 (p3,p4) values (1,8);

insert into TB2 (p3,p4) values (6,6);

/* 查询 */

select * from TB1

select * from TB2

/* 创建表TB1的单表视图 */

create or replace view vw_tb1_1 as

select p1,p2 from tb1

/* 查询 */

select * from vw_tb1_1

/* 单表视图可以插入 */

insert into vw_tb1_1 (p1,p2) values (3,3);

/* 单表视图可以修改 */

update vw_tb1_1 set p2 = 678 where p1 = 3 ;

/* 单表视图可以删除 */

delete vw_tb1_1 where p1 = 3 ;

/* 创建表TB1的多表视图 */

create or replace view vw_tb1_2 as

select a.p1,a.p2 from tb1 a

left join tb2 b on a.p1 = b.p3

/* 查询 */

select * from vw_tb1_2

/* 无法修改与非键值保存表对应的列 */

insert into vw_tb1_2 (p1,p2) values (3,3);

/* 无法修改与非键值保存表对应的列 */

update vw_tb1_2 set p2 = 678 where p1 = 1 ;

/* 不能从没有一个键值保存表的视图中删除 */

delete vw_tb1_2 where p1 = 3 ;

Create Or Replace Trigger tr_vw_tb1_2_t

Instead Of Insert or update or delete

on vw_tb1_2

for each row

Declare

begin

If Inserting Then

Insert Into tb1 (p1,p2) Values (:New.p1,:New.p2);

Insert Into tb2 (p3,p4) Values (:New.p1,:New.p2);

elsif Updating Then

Update tb1 set p2=:New.p2 where p1=:New.p1;

Update tb2 set p4=:New.p2 where p3=:New.p1;

elsif Deleting then

Delete from tb1 where p1=:Old.p1;

Delete from tb2 where p3=:Old.p1;

End if;

end;

/* OK */

insert into vw_tb1_2 (p1,p2) values (3,3);

/* OK */

update vw_tb1_2 set p2 = 678 where p1 = 1 ;

/* OK */

delete vw_tb1_2 where p1 = 3 ;

/* 创建表TB2的单表视图 */

create or replace view vw_tb2 as

select p3,p4 from tb2

create or replace view vw_tb3 as

select null as p1,null as p2 from dual

/* 创建表TB1的更加复杂的多表视图 */

create or replace view vw_tb1_2 as

select a.p1,a.p2 from vw_tb1_1 a

left join vw_tb2 b on a.p1 = b.p3

left join vw_tb3 c on a.p1 = c.p1

/* 权限不足 */

insert into vw_tb1_2 (p1,p2) values (3,3);

/* 权限不足 */

update vw_tb1_2 set p2 = 678 where p1 = 1 ;

/* 权限不足 */

delete vw_tb1_2 where p1 = 3 ;

oracle视图能增删改,oracle视图的增删改相关推荐

  1. oracle select with read only,oracle创建视图的一些总结:包括with check option和with read only...

    oracle创建视图的一些总结: create [or replace][force | noforce] view [user.] viewName (column [,column2]...) a ...

  2. oracle怎么把数据跑进视图里,在Oracle中向视图中插入数据的方法

    在Oracle中向视图中插入数据的方法 插入视图的条件: 1.如果视图是基于一个基础表产生的,那么这就称为非连接视图,所有的非连接视图都是可以更新的,也就是说可以在该视图上进行,INSERT,UPDA ...

  3. 银行使用oracle做查询,Oracle EBS ERP银行信息查询视图

    Oracle EBS ERP银行信息查询视图 CREATE OR REPLACE VIEW XXX_STD_CE_BANKINFO_V AS SELECT cbau.org_id, cba.accou ...

  4. oracle雾化试图_Oracle创建物化视图

    Oracle创建物化视图 通过Oracle物化视图章节,我们已经了解到Oracle物化视图的作用和创建原理,本节通过实例详细讲解Oracle是如何创建物化视图的. 创建物化视图语法: 语法:creat ...

  5. java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作

    1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...

  6. mysql. Oracle创建视图,Navicat 教程:Oracle 视图

    Navicat for Oracle 视图用于访问一组关联(表),就像一个单一的表,并限制访问.视图也可以用来限制访问行(一个特定表的子集).点击"视图"按钮即可打开视图对象列表. ...

  7. Oracle 原理: 物化视图,快照,实体化视图。

    8i和8i前,oracle 提供了 快照 snapshot ,9i中把其改名为物化视图,也叫实体化视图 materialized View. 在海量数据中,如果只想查询特定的数据,通常会select ...

  8. Linux怎么调oracle存储,Linux 环境下Oracle安装与调试(四)之视图、存储过程

    1.视图的介绍和使用 表和视图的区别,表是占用硬盘空间物理表,而视图可以理解为一个虚表,并不存储在硬盘上, 不占用硬盘空间,实际上就是一个查询语句,方便查询. 对视图里面的数据操作(增 删 改) 其实 ...

  9. oracle 监控 视图,【转】oracle几个常用的监控视图

    [转]oracle几个常用的监控视图 oracle几个常用的监控视图 oracle几个常用的监控视图 v$process视图: v$process视图包含当前系统oracle运行的所有进程信息.常被用 ...

最新文章

  1. 妲己智能机器人开箱_王者荣耀:妲己第二款史诗限定皮肤周三上架,全局数字流特效一览...
  2. Flutter开发Flutter与原生OC、Java的交互通信-1(47)
  3. server2012 r2搭建双DNS
  4. 牛客网专题 概率dp
  5. 第4关:HDFS-JAVA接口之删除文件
  6. 华为交换机一次性进入多个接口_华为交换机交换机常用配置(认证、批量操作)...
  7. 设置UITableView的separatorInset值为UIEdgeInsetsZero,分隔线不最左端显示的问题
  8. 3D数学之快速傅立叶变换(Fast Fourier Transform-FFT)
  9. win32 ——定时器消息 小程序:打印时间
  10. 【问答】开放领域问答梳理(2)
  11. K8s-Demo实现
  12. Hadoop2.0环境搭建
  13. ubuntu-12.04.4-server安装
  14. 检测服务器网站端口,检测服务器80端口
  15. 经常发Email,你知道“抄送(Cc)”、“密送(Bcc)”的意思吗?
  16. 如何让木马克星能在win2003上免费使用
  17. 【墨尘】变态心理学(北京大学)
  18. 2022元宇宙共享大会|倪健中:我们正在开启元宇宙新时代
  19. 5-(4-氨基苯基)-10,15.20-三苯基卟啉(TPP-NH2)/多金属氧酸盐-四苯基卟啉化合物TPP-PW齐岳供应
  20. 快应用的用法和常见问题解答(下)

热门文章

  1. [Spring MVC] - Spring MVC环境搭建
  2. 从windows server的文件服务到分布式文件服务(一)
  3. 【百度分享】以太网卡TSO技术浅析
  4. 2019RPA财务行业峰会:财务数字化转型
  5. spring MVC做form提交Neither BindingResult nor plain target object for bean name 'command' available...
  6. android 手机监听屏幕锁屏,用户解锁
  7. jquery书写左右两个多选下拉列表交换移除功能
  8. Windows下程序打包发布时的小技巧
  9. 安卓中事件绑定的写法
  10. Android init.rc文件格式解析