通过一些试验加深了文档描述,下面列出几点平常不太注意到的内容:
1、视图的依赖性
如果基表(base table)的结构定义修改了
那么基于此表通过select * from table创建的视图,将失效;
那么基于此表通过select C1,C2 from table创建的视图,将有可能失效。
如果基表(base table)drop后重新创建同名对象,表结构不变的情况下
那么基于此表创建的视图,将不会失效。
2、程序单元的依赖性
如果依赖对象的引用对象是表或者视图,那么引用对象的任何结构定义修改或者drop创建都将导致依赖对象失效。
只是oracle会在首次执行时候首先自动重新编译依赖对象,因此大家可能不会觉察到而已。
如果引用对象是package,package的声明变更将导致依赖对象失效,如果仅仅是package的定义(body)的变更,依赖对象仍然有效。
上述两点中,第1点可能是大家不太会注意的,经常会遇到如下情况:
客户在使用WEB前端引用过程中报告了XX视图无效的错误~~囧,记得基表变更后重新更新了视图就ok了。
-The End-