View 如果删除表,现有DB2视图会发生什么情况?

View 如果删除表,现有DB2视图会发生什么情况?,view,db2,sql-drop,View,Db2,Sql Drop,如果我们在现有DB2表上创建了一个视图,然后删除该表。视图将发生什么情况?视图将无效/不工作。尝试从中选择将失败 要尝试它: create table TEST_TABLE ( TEST_COL INTEGER ); INSERT INTO TEST_TABLE VALUES(1); SELECT * FROM TEST_TABLE; create view TEST_VIEW AS SELECT * FROM TEST_TABLE; SELECT * FROM TEST_VIEW;

如果我们在现有DB2表上创建了一个视图,然后删除该表。视图将发生什么情况?

视图将无效/不工作。尝试从中选择将失败

要尝试它:

create table TEST_TABLE (
TEST_COL INTEGER
);

INSERT INTO TEST_TABLE VALUES(1);

SELECT * FROM TEST_TABLE;

create view TEST_VIEW AS
SELECT * FROM TEST_TABLE;

SELECT * FROM TEST_VIEW;

DROP TABLE TEST_TABLE;

SELECT * FROM TEST_VIEW;
最后一条语句给出了错误:

[IBM][CLI Driver][DB2/NT] SQL0575N  View or materialized query table
"TEST_VIEW" cannot be used because it has been marked inoperative.
SQLSTATE=51024

视图变为无效/不工作。尝试从中选择将失败

要尝试它:

create table TEST_TABLE (
TEST_COL INTEGER
);

INSERT INTO TEST_TABLE VALUES(1);

SELECT * FROM TEST_TABLE;

create view TEST_VIEW AS
SELECT * FROM TEST_TABLE;

SELECT * FROM TEST_VIEW;

DROP TABLE TEST_TABLE;

SELECT * FROM TEST_VIEW;
最后一条语句给出了错误:

[IBM][CLI Driver][DB2/NT] SQL0575N  View or materialized query table
"TEST_VIEW" cannot be used because it has been marked inoperative.
SQLSTATE=51024

当一个视图失效时,如上面的示例所示,DB2将允许您重新创建该视图,而无需首先删除它。这样就可以重新运行视图DDL文件(或者简单地转储SYSCAT.VIEWS的文本列并执行该操作)

当视图无效时,如上面的示例所示,DB2将允许您重新创建该视图,而无需先删除它。这样就可以重新运行视图DDL文件(或者简单地转储SYSCAT.VIEWS的文本列并执行该操作)

什么也没发生。不要用那种观点。您可以重新创建该表,以便稍后再次使用该视图。

什么也没有发生。不要用那种观点。您可以重新创建该表,以便以后再次使用该视图。

它将不起作用。 使用以下查询可以找到相同的信息:

SELECT viewscheama,viewname,valid FROM syscat.views
。 对于垂直视图,如果“Valid”列有除“Y”之外的任何值,则该视图将不工作

它不能工作。 使用以下查询可以找到相同的信息:

SELECT viewscheama,viewname,valid FROM syscat.views
。 对于垂直视图,如果“Valid”列有除“Y”之外的任何值,则该视图将不工作