• Oracle表结构修改触发视图无法正常使用问题


    • 一.问题描述

      当对视图使用的基表进行表结构修改后,会触发视图的无效以及编译出错问题,必须重建视图解决。

      二.问题再现

      1.Oracle10g环境

      1.1 创建视图测试用两张基表:TestTable和TestUser

      1.2  创建测试视图VW_TABLEUSERALL和VW_TABLEUSER

      前者使用了TestTable.*, 后者显示指定列。

       查询视图的状态如下:全部是Valid状态

        

      1.3 修改TestTable表结构:增加一列Col1

       再次查询视图的状态如下:全部是INVALID状态

       

       

      1.4 重新编译两张视图

       

       重新查询视图的状态如下:全部是Valid状态:

       

         查询视图的数据:VW_TableUserAll查询出错。

       

      1.5 视图重建

       

        重新查询视图的数据:VW_TableUserAll查询正常: 新增的Col1出现了!

         

         2. Oracle11g环境

         2.1 环境准备

         和Orale10g下的1.1 和1.2 步骤一致

         2.2 修改TestTable表结构:增加一列Col1

         

          查询视图的状态如下:全部是VALID状态

         

          2.3 查询视图VW_TableUserAll,没有新增的Col1这一列!

         

         但是基表TestTable中存在Col1这一列

        

        2.4 重新编译视图,依旧查不到Col1这一列

        

        2.5 重建视图,问题解决

       

        

      3. 问题结论

      Oracle10g环境下:

      对视图基表的修改会触发view的无效。如果视图中使用了修改的基表表结构,重新编译视图无法解决问题,视图需要重建。

      Oracle11g环境下:

      对视图基表的修改不会触发view的无效。如果视图中使用了修改的基表表结构,重新编译视图无法解决问题,视图需要重建。

      因此:

      如果修改了视图使用到的基表的表结构被修改了,恰如视图中涉及了修改后的表结构,重新编译视图操作,仍无法查询到修改的列,必须进行视图重建。

      转自:http://www.cnblogs.com/tianqing/p/3749729.html

  • 相关阅读:
    可自主二次开发的微信云控客服crm系统软件(带源码)
    个人微信号二次开发sdk协议,微信个人号开发API接口
    最新的微信SCRM客服系统
    微信个人号客服系统淘宝客发单机器人sdk服务端接口列表
    sdk定制开发微信群控云控客服系统教程
    web版微信自动发消息(实现微信个人号机器人)
    Adobe Audition 基本使用
    MPEG-7 视觉描述符
    图像检索:几种基于纹理特征的图像检索算法
    div+css基础教程
  • 原文地址:https://www.cnblogs.com/guanjie20/p/4266747.html
Copyright © 2020-2023  润新知