在HSQL中刷新视图

时间:2016-07-25 08:45:28

标签: sql database oracle hsqldb

我想在HSQL中更新视图,而不是一次又一次地编写相同的语句。 我有一个表ID,First_NAME和LAST_NAME的联系人。我也有这个表的VIEW,我用

创建
CREATE VIEW IDGREATERTHREE AS SELECT * FROM CONTACTS WHERE ID > 3;

在向表格添加新列后,如何更新我的VIEW。我想更新我的表格,不用这样的内容:

ALTER VIEW IDGREATERTHREE AS SELECT * FROM CONTACTS WHERE ID > 3;

我想找到一种方法来刷新我的无效视图,就像在Oracle中一样:

ALTER VIEW IDGREATERTHREE COMPILE;

我也在寻找一种只选择无效视图的方法。使用SELECT * FROM INFORMATION_SCHEMA.VIEWS,我无法看到无效视图和非无效视图之间的任何差异。

2 个答案:

答案 0 :(得分:0)

解决方法是编写 ON DDL 触发器。

在此ON DDL触发器中,您可以检查是否修改了表格。

如果是这种情况,则使用动态SQL重新创建视图。这适用于(您使用标记)。有关于在Internet上创建触发器和动态SQL的大量文档。

答案 1 :(得分:0)

HSQLDB无法拥有无效视图。创建视图时,SELECT * FROM CONTACTS将扩展为实际的列名称。向表中添加列时,将使用原始列名重新编译视图,并且不包括新列。