2016-07-25 66 views
2

我想更新HSQL中的視圖,而不必一次又一次地編寫相同的語句。 我有一張桌子與ID,First_NAME和LAST_NAME聯繫。我也有這個表的視圖,我與在HSQL中刷新視圖

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

創建我如何更新我的看法後,我增加了一個新的列到我的餐桌。我想更新我的表沒有這樣的事:

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

我想找到一種方法來刷新以同樣的方式我無效視圖像甲骨文:

ALTER VIEW IDGREATERTHREE COMPILE; 

我也是尋找一種方法來選擇無效的視圖。與SELECT * FROM INFORMATION_SCHEMA.VIEWS我無法看到無效視圖和非無效視圖之間的任何區別。

回答

0

對此的解決方案是編寫觸發器的ON DDL觸發器。

在此ON DDL觸發器中,檢查是否修改了您的表。

如果是這種情況,那麼您使用動態SQL重新創建您的視圖。這可以通過(你用標記)來實現。關於在Internet上創建觸發器和動態SQL有充足的文檔。

0

HSQLDB不能有無效的視圖。當您創建視圖時,SELECT * FROM CONTACTS將擴展爲實際的列名稱。向表中添加列時,視圖將與原始列名重新編譯,並且不包括新列。