Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 使用数据库对象 » 使用视图 » 视图依赖性

 

依赖性和模式变更更改

尝试变更为表或视图定义的模式时,要求数据库服务器考虑是否有受更改影响的相关视图。举例来说,模式变更操作包括:

  • 删除表、视图、实例化视图或列

  • 重命名表、视图、实例化视图或列

  • 添加、删除或变更列

  • 变更列的数据类型、大小或为空性

  • 禁用视图或表的视图依赖性

当尝试进行模式变更操作时,会发生以下事件:

  1. 数据库服务器生成直接或间接依赖于所变更表或视图的视图的列表。忽略状态为 DISABLED 的视图。

    如果有任何相关视图为实例化视图,请求即会失败并返回错误,剩余的事件也就不会发生。您必须显式禁用相关实例化视图,然后才能继续模式变更操作。请参见启用和禁用实例化视图

  2. 数据库服务器获得所变更的对象以及所有相关常规视图的独占模式锁。

  3. 数据库服务器将所有相关常规视图的状态设置为 INVALID。

  4. 数据库服务器执行模式变更操作。如果操作失败,锁会被释放,相关常规视图的状态重置为 VALID,返回错误,下一步骤也不会发生。

  5. 数据库服务器重新编译相关常规视图,编译成功后将各视图的状态设置为 VALID。如果有任何常规视图的编译失败,该视图会保持 INVALID 状态。后续对 INVALID 常规视图的请求会使数据库服务器尝试重新编译该视图。如果后续尝试也失败,可能需要变更 INVALID 视图或其所依赖的对象。

 依赖性和模式变更更改(常规视图)
 依赖性和模式变更更改(实例化视图)