View 我是否可以通过h2 SCRPT命令影响转储/导出订单
我有一个h2模式,其中包含一些表和一个视图 该视图由以下内容定义: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
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报告(奇怪但发生了)。我尝试了这个解决方法,它解决了我的问题(虽然很难看,但效果很好)。