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

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - SQL 的用法 » 表、视图和索引 » 视图 » 常规视图

 

常规视图的状态

常规视图都与某种状态相关联。状态反映了视图对数据库服务器的可用性。您可以在 Sybase Central 的左窗格中单击 [视图] 并检查右窗格中 [状态] 列的值,来查看所有视图的状态。如果要查看单个视图的状态,请在 Sybase Central 中右击该视图,然后单击 [属性] 以查看 [状态] 值。

以下是常规视图的可能状态的说明:

  • 有效   视图有效并保证与其定义一致。数据库服务器无需任何附加工作即可利用此视图。已启用的视图具有 [有效] 状态。

    在 SYSOBJECT 系统视图中,值 1 指示 [有效] 状态。

  • 无效   如果对被引用对象的模式更改导致不能启用该视图,则视图会在模式更改后变为 INVALID 状态。例如,假定视图 v1 引用表 t 中的列 c1。如果通过变更语句删除 t 中的 c1,当数据库服务器在用于删除列的 ALTER 操作期间尝试重新编译视图时,v1 的状态会被设置为 [无效]。这种情况下,只有将 c1 添加回 t 或将 v1 改为不再引用 c1,v1 才能重新编译。如果视图所引用的某个表或视图被删除,该视图的状态也可能会变为 INVALID。

    INVALID 视图与 DISABLED 视图的区别在于:每次引用 INVALID 视图时(例如,由某个查询引用),数据库服务器都会尝试重新编译该视图。如果编译成功,查询会继续进行。视图的状态会保持为 [无效],直到显式启用该视图。如果编译失败,则返回错误。

    数据库服务器在内部启用 [无效] 视图时,会发出性能警告。

    在 SYSOBJECT 系统视图中,值 2 指示 [无效] 状态。

  • 已禁用   数据库服务器不能使用处于 DISABLE 状态的视图来应答查询。任何尝试使用禁用视图的查询都会返回错误。

    以下情况下常规视图会处于此状态:

    • 您以某种方式显式地禁用了该视图,例如通过执行 ALTER VIEW...DISABLE 语句。

    • 您禁用了该视图所依赖的某个实例化或非实例化视图。

    • 您以某种方式禁用了某个表的视图依赖性,例如通过执行 ALTER TABLE...DISABLE VIEW DEPENDENCIES 语句。

    在 SYSOBJECT 系统视图中,值 4 指示 DISABLED 状态。

 另请参见