我有一个带有一些表和视图的h2模式。
视图的定义者:
CREATE FORCE VIEW PUBLIC.VIEW_TEST(NAME_,STREET_) AS
SELECT
USER.NAME_,
ADDRESS.STREET_
FROM
PUBLIC.USER
LEFT OUTER JOIN PUBLIC.ADDRESS ON USER.ADDRESS_= ADDRESS.ID_
[转储(通过“ SCRIPT TO ...
”)后,在转储文件中,“ CREATE FORCE VIEW PUBLIC.VIEW_TEST ...
”在“ CREATE TABLE ADDRESS ...
”子句之前。该表已在视图内联接。
结果是,通过“ RUNSCRIPT FROM ...
”还原架构后,命令“ SELECT * FROM VIEW_TEST
”返回错误,表明所引用的表“ ADDRESS
”未知:
View "PUBLIC.VIEW_TEST" is invalid: "Tabelle ""ADDRESS"" not found
Table ""ADDRESS"" not found [42102-197]"; SQL statement:
SELECT * FROM VIEW_TEST [90109-197] 90109/90109
如果我放下视图并重新创建它,一切都很好,但是我想使转储和还原过程自动化。
是否可以设置表和视图的顺序?
确保视图定义在转储末尾的最佳方法是什么?
非常感谢
如果使用持久数据库,则可以在执行RUNSCRIPT
命令后关闭连接(确保您不使用DB_CLOSE_DELAY
或使用SHUTDOWN
命令)并重新打开它。视图将在启动时正确初始化。
如果使用内存数据库,唯一的解决方法是使用以下方法重新编译视图:>
ALTER VIEW VIEW_TEST RECOMPILE;
ALTER VIEW otherView RECOMPILE;
.....