Db2 如果我们在另一个视图上有一个视图,并且我们放弃了父视图,那么另一个视图会怎么样?

Db2 如果我们在另一个视图上有一个视图,并且我们放弃了父视图,那么另一个视图会怎么样?,db2,Db2,如果我们在另一个视图上有一个视图,并且我们放弃了父视图,那么另一个视图会怎么样?重新创建基本视图后,第二个视图会再次激活吗?根据我对DB2中的视图(以及一般的SQL)的理解,它们有效地充当SQL select语句的别名。我希望在这种情况下,您的子视图仍然存在,但在删除父视图时查询它将导致错误 由于子视图的定义已存储并保持静态,因此使用相同的对象名称重新创建父视图应会导致子视图再次返回预期结果 顺便说一句,这对你来说很容易验证你自己。:-) 可能与发生在中的情况相同。迈克尔·沙雷克的回答是正确的;

如果我们在另一个视图上有一个视图,并且我们放弃了父视图,那么另一个视图会怎么样?重新创建基本视图后,第二个视图会再次激活吗?

根据我对DB2中的视图(以及一般的SQL)的理解,它们有效地充当SQL select语句的别名。我希望在这种情况下,您的子视图仍然存在,但在删除父视图时查询它将导致错误

由于子视图的定义已存储并保持静态,因此使用相同的对象名称重新创建父视图应会导致子视图再次返回预期结果


顺便说一句,这对你来说很容易验证你自己。:-)

可能与发生在中的情况相同。

迈克尔·沙雷克的回答是正确的;即使替换了删除的视图,依赖于已删除视图的其余视图仍将保持无效(SYSCAT.views中该行的VALID='N'。您需要为SYSCAT.VIEWS中的任何视图重新发出create语句,其中VALID='N',但好消息是您可以覆盖无效视图而不删除它

我通常使用EXPORT来提取SYSCAT.VIEWS中每个视图的文本列的副本,其中VALID='N'。然后我执行该文件中的DDL语句,通常在第一次遍历时会替换所有无效视图。但是,如果您有更复杂的相互依赖视图层次结构,则可能需要再运行几次该文件。没有必要过滤掉在上一个过程中有效的视图的DDL;这些语句将被安全地拒绝,并出现重复对象错误