当视图基础更改时

可以通过数种方法来更改视图所基于的表和视图。视图将自动反映大部分的更改。

删除表或视图时,会自动删除同一数据库中依赖于该表或视图的任何视图。

唯一一种变更视图定义的方法是删除并重新创建该视图。因此,如果更改其他视图所依赖于的视图的定义,那么还必须重新创建那些视图(这是因为它们将被全部删除)。

重命名表时,会修改同一数据库中依赖于该表的任何视图以使用新名称。对列重命名时,同一数据库中依赖于该表的视图将进行更新以选择正确的列。然而,视图本身中的列的名称不更改。有关示例,请再调用基于 customer 表的以下视图:
CREATE VIEW name_only AS
      SELECT customer_num, fname, lname FROM customer
现在,假定按以下方式更改了 customer 表:
RENAME COLUMN customer.lname TO surname
要直接选择客户的姓氏,必须现在选择新列名。然而,从视图中看来,列的名称没有更改。下列两个查询是等价的:
SELECT fname, surname FROM customer

SELECT fname, lname FROM name_only

当删除列以变更表时,不会修改视图。如果使用那些视图,那么会发生错误 -217(在查询的任何表中都找不到列)。不修改视图的原因是可以通过删除列并接着添加同名的列来更改表中的列顺序。基于该表的视图会继续工作,这些视图会保留它们的原始列顺序。

您可以使视图基于外部数据库中的表和视图。对其他数据库中的表和视图所作的更改不会反映在视图中。在某人查询视图并且由于外部表已更改而出错之前,这样的更改可能不明显。例如,如果视图中所包含的某个远程对象中的某个列变更为具有其他类型,那么必须删除该视图并重新创建。