oracle 普通用户对视图增删改需要有什么权限

love灬少 2015-10-16 09:37:11
oracle 普通用户对视图增删改需要有什么权限
...全文
1099 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyon2008 2015-10-20
  • 打赏
  • 举报
回复
应该是对视图涉及到的表的操作权限不够,如果还涉及到跨用户的话更需要授权,比如grant select, insert, update, delete, references, alter, index on user_b.tab1 to user_a;
love灬少 2015-10-16
  • 打赏
  • 举报
回复
当前 用户 A用户另外一个用户B的简单视图的DML操作,用户B的视图的基础表 是用户C下面的表
love灬少 2015-10-16
  • 打赏
  • 举报
回复
引用 13 楼 beyon2008 的回复:
普通视图,只有对涉及到的表数据做操作,视图数据才会更新
简单的视图 可以进行DML操作的啊
love灬少 2015-10-16
  • 打赏
  • 举报
回复
引用 10 楼 wmxcn2000 的回复:
[quote=引用 6 楼 lovexiaoxinxin 的回复:] [quote=引用 5 楼 wmxcn2000 的回复:] 首先要确定这个视图,是不是 个可更新的视图: 1. 视图语句中使用了 group by 这类语句,就更新不了。 2. 视图是否使用了 readonly 选项 3.适当的 with check 选项 再确定对基础表是不是有权限。
你说的这些全部都能够确认了啊[/quote] 你现在更新视图的数据时,有什么提示?[/quote] 就是提醒的权限不够
beyon2008 2015-10-16
  • 打赏
  • 举报
回复
普通视图,只有对涉及到的表数据做操作,视图数据才会更新
beyon2008 2015-10-16
  • 打赏
  • 举报
回复
create any materialized view, alter any materialized view, drop any materialized view 物化视图的权限
beyon2008 2015-10-16
  • 打赏
  • 举报
回复
“对视图数据的增 删 改 ”,难道你用的是物化视图,否则视图数据是自动更新的,你也干预不了啊?
卖水果的net 2015-10-16
  • 打赏
  • 举报
回复
引用 6 楼 lovexiaoxinxin 的回复:
[quote=引用 5 楼 wmxcn2000 的回复:] 首先要确定这个视图,是不是 个可更新的视图: 1. 视图语句中使用了 group by 这类语句,就更新不了。 2. 视图是否使用了 readonly 选项 3.适当的 with check 选项 再确定对基础表是不是有权限。
你说的这些全部都能够确认了啊[/quote] 你现在更新视图的数据时,有什么提示?
love灬少 2015-10-16
  • 打赏
  • 举报
回复
引用 8 楼 beyon2008 的回复:
GRANT CREATE ANY VIEW,MERGE ANY VIEW,DROP ANY VIEW TO USER
这几个权限都已经有了啊
beyon2008 2015-10-16
  • 打赏
  • 举报
回复
GRANT CREATE ANY VIEW,MERGE ANY VIEW,DROP ANY VIEW TO USER
love灬少 2015-10-16
  • 打赏
  • 举报
回复
引用 5 楼 wmxcn2000 的回复:
首先要确定这个视图,是不是 个可更新的视图: 1. 视图语句中使用了 group by 这类语句,就更新不了。 2. 视图是否使用了 readonly 选项 3.适当的 with check 选项 再确定对基础表是不是有权限。
直接对基础表插入数据是有权限的啊
love灬少 2015-10-16
  • 打赏
  • 举报
回复
引用 5 楼 wmxcn2000 的回复:
首先要确定这个视图,是不是 个可更新的视图: 1. 视图语句中使用了 group by 这类语句,就更新不了。 2. 视图是否使用了 readonly 选项 3.适当的 with check 选项 再确定对基础表是不是有权限。
你说的这些全部都能够确认了啊
卖水果的net 2015-10-16
  • 打赏
  • 举报
回复
首先要确定这个视图,是不是 个可更新的视图: 1. 视图语句中使用了 group by 这类语句,就更新不了。 2. 视图是否使用了 readonly 选项 3.适当的 with check 选项 再确定对基础表是不是有权限。
z123zjf 2015-10-16
  • 打赏
  • 举报
回复
alter view
love灬少 2015-10-16
  • 打赏
  • 举报
回复
引用 2 楼 kuaileyangle 的回复:
太简单没人回答,create view 和 drop view
我说的是对视图数据的增 删 改 啊 亲 ,不是 新增视图 和删除视图啊
现在 2015-10-16
  • 打赏
  • 举报
回复
太简单没人回答,create view 和 drop view
love灬少 2015-10-16
  • 打赏
  • 举报
回复
没人知道吗 ,求大神出来 解答一下啊
love灬少 2015-10-16
  • 打赏
  • 举报
回复
引用 17 楼 wmxcn2000 的回复:
[quote=引用 14 楼 lovexiaoxinxin 的回复:] [quote=引用 10 楼 wmxcn2000 的回复:] [quote=引用 6 楼 lovexiaoxinxin 的回复:] [quote=引用 5 楼 wmxcn2000 的回复:] 首先要确定这个视图,是不是 个可更新的视图: 1. 视图语句中使用了 group by 这类语句,就更新不了。 2. 视图是否使用了 readonly 选项 3.适当的 with check 选项 再确定对基础表是不是有权限。
你说的这些全部都能够确认了啊[/quote] 你现在更新视图的数据时,有什么提示?[/quote] 就是提醒的权限不够[/quote] 你直接去更新基表,看看有提示吗?[/quote] 不会有提醒啊
卖水果的net 2015-10-16
  • 打赏
  • 举报
回复
引用 14 楼 lovexiaoxinxin 的回复:
[quote=引用 10 楼 wmxcn2000 的回复:] [quote=引用 6 楼 lovexiaoxinxin 的回复:] [quote=引用 5 楼 wmxcn2000 的回复:] 首先要确定这个视图,是不是 个可更新的视图: 1. 视图语句中使用了 group by 这类语句,就更新不了。 2. 视图是否使用了 readonly 选项 3.适当的 with check 选项 再确定对基础表是不是有权限。
你说的这些全部都能够确认了啊[/quote] 你现在更新视图的数据时,有什么提示?[/quote] 就是提醒的权限不够[/quote] 你直接去更新基表,看看有提示吗?
视图:是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。 视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。 视图的优点: 1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。 2.用户通过简单的查询可以从复杂查询中得到结果。 3.维护数据的独立性,试图可从多个表检索数据。 4.对于相同的数据可产生不同的视图视图分为简单视图和复杂视图: 1、简单视图只从单表里获取数据,复杂视图从多表; 2、简单视图不包含函数和数据组,复杂视图包含; 3、简单视图可以实现DML操作,复杂视图不可以。 语法结构:创建视图 CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 语法解析: OR REPLACE :若所创建的试图已经存在,则替换旧视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图(即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用); NOFORCE :如果基表不存在,无法创建视图,该项是默认选项(只有基表都存在ORACLE才会创建该视图)。 alias:为视图产生的列定义的别名; subquery :一条完整的SELECT语句,可以在该语句中定义别名; WITH CHECK OPTION :插入或修的数据行必须满足视图定义的约束; WITH READ ONLY :默认可以通过视图对基表执行增删操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删操作。现实开发中,基本上不通过视图对表中的数据进行增删操作。 案例3:基于EMP表和DEPT表创建视图 代码演示:视图 SQL> CREATE OR REPLACE VIEW EMPDETAIL 2 AS 3 SELECT EMPNO,ENAME,JOB,HIREDATE,EMP.DEPTNO,DNAME 4 FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO 5 WITH READ ONLY 6 / VIEW CREATED SQL> SELECT * FROM EMPDETAIL; ① EMPNO ENAME JOB HIREDATE DEPTNO DNAME 7369 SMITH CLERK 17-12月-80 20 RESEARCH 7499 ALLEN SALESMAN 20-2月 -81 30 SALES 7521 WARD SALESMAN 22-2月 -81 30 SALES 7566 JONES MANAGER 02-4月 -81 20 RESEARCH 7654 MARTIN SALESMAN 28-9月 -81 30 SALES 7698 BLAKE MANAGER 01-5月 -81 30 SALES 7782 CLARK MANAGER 09-6月 -81 10 ACCOUNTING 7788 SCOTT ANALYST 19-4月 -87 20 RESEARCH 7839 KING PRESIDENT 17-11月-81 10 ACCOUNTING 7844 TURNER SALESMAN 08-9月 -81 30 SALES 7876 ADAMS CLERK 23-5月 -87 20 RESEARCH 7900 JAMES CLERK 03-12月-81 30 SALES 7902 FORD ANALYST 03-12月-81 20 RESEARCH 7934

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧