View 我是否可以通过h2 SCRPT命令影响转储/导出订单

View 我是否可以通过h2 SCRPT命令影响转储/导出订单,view,backup,h2,restore,View,Backup,H2,Restore,我有一个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_ 转储后(通过“脚本到…”),在转储文件中,“创建强制视图PUBLIC.VIEW\u TES

我有一个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_
转储后(通过“
脚本到…
”),在转储文件中,“
创建强制视图PUBLIC.VIEW\u TEST…
”位于“
创建表地址…
”子句之前。此表在视图中联接

结果是,在恢复模式后(通过“
RUNSCRIPT FROM…
”),命令“
SELECT*FROM VIEW\u TEST
”返回一个错误,即引用的表“
地址
”未知:

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\u close\u DELAY
或使用
SHUTDOWN
命令),然后重新打开连接。视图将在启动时正确初始化

如果使用内存中的数据库,唯一的解决方法是使用

ALTER VIEW\u测试重新编译;
更改视图或其他视图重新编译;
.....

好的,谢谢。我猜这可能是h2中的一个bug,但我还没有找到这个bug报告(奇怪但发生了)。我尝试了这个解决方法,它解决了我的问题(虽然很难看,但效果很好)。