CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

关于视图的update问题!

楼主creativet(tao)2004-08-01 22:16:27 在 Oracle / 开发 提问

我对自己创建的视图进行update操作,结果出现提示:  
  “ORA-01733:   此处不允许虚拟列”  
  后我查看表user_updatable_columns,我创建的视图的列的updatable,insertable,deletable的值确实是NO,但是我用update语句想将其进行更新为YES的时候,却出现提示:  
  "ORA-01031:   权限不足"  
  后我又用sys用户给我创建视图的用户在表user_updatable_columns授权,使其具有update的权限,但是又报:  
  "ORA-01733:   此处不允许虚拟列"  
   
   
  请问这是什么原因?谢谢!  
   
  问题点数:20、回复次数:9Top

1 楼wl3721()回复于 2004-08-01 22:31:52 得分 20

更新视图与你构造视图时的表有关系,而且还与你的更新语句有关。你查看的user_updatable_columns是系统的数据字典,只能读,不能更新。这个数据字典只是告诉你在你的视图中那些列是可更新的,那些是不能更新的,视图中的列是否能更新,决定与你构造视图时的sql。Top

2 楼creativet(tao)回复于 2004-08-01 23:06:46 得分 0

我构造视图的sql语句就是最标准的方法:  
  create   or   replace   view   as   select   field1,field2....   from   table_name   where   ....  
  这样是否会影响到视图的更新?请指教!Top

3 楼teddy_huang(生活多美好,睡觉)回复于 2004-08-02 00:14:15 得分 0

pls   paster   your   create   statement.  
  rownum   psedo_column   can't   apear   in   create   view   clause.Top

4 楼creativet(tao)回复于 2004-08-02 09:09:04 得分 0

完整的create语句如下:  
  create   or   replace   view   query_view   as  
  select    
  a.field1,  
  a.field2,  
  b.field1,  
  b.field2  
  from    
  table1   a,  
  table2   b    
  where    
   
  a.field1=b.field1;Top

5 楼creativet(tao)回复于 2004-08-02 09:15:14 得分 0

对了,上面的语句忘了一点,完整的应该如下:  
  create   or   replace   view   query_view   as  
  select    
  a.field1,  
  a.field2,  
  b.field1,  
  b.field2,  
                    null   as   field3,  
                    null   as   field4  
  from    
  table1   a,  
  table2   b    
  where    
   
  a.field1=b.field1;  
   
  其中field3和field4是我自己创建的列,由select语句查询到的结果不包括field3和field4。我想用update更新的列也就是field3和field4。但就是更新不了!!!Top

6 楼drabit(square)回复于 2004-08-02 11:28:29 得分 0

用instead   of   trigger作视图更新Top

7 楼creativet(tao)回复于 2004-08-02 15:08:42 得分 0

能将这个instead   of   trigger贴出来,作个参考吗?谢谢!!!Top

8 楼idealistt(风过)回复于 2004-08-02 17:49:26 得分 0

要看视图的定义,  
  最简单的情况下,单个表的视图肯定可以更新,  
  多个表的视图有条件限制的,要看是否所以的关键列都选入视图中Top

9 楼teddy_huang(生活多美好,睡觉)回复于 2004-08-02 23:42:08 得分 0

field3,   field4对应哪个表中的字段呢?  
  如果没有对应的字段又怎么更新呢?  
  view并不实际存储数据。Top

相关问题

  • 视图
  • 视图
  • 视图
  • update 表 视图 存储过程的问题
  • 视图切分
  • 还是视图
  • 关于视图
  • SQL视图
  • 视图问题。
  • 视图问题

关键词

  • 视图
  • 语句
  • view
  • 数据
  • 更新
  • field
  • 表
  • 构造
  • update
  • 创建

得分解答快速导航

  • 帖主:creativet
  • wl3721

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo