Sql DB2z/OS—为现有表创建表别名/同义词,指向其他现有表

Sql DB2z/OS—为现有表创建表别名/同义词,指向其他现有表,sql,db2,alias,synonym,zos,Sql,Db2,Alias,Synonym,Zos,是否可以为现有表创建指向其他现有表的别名或同义词 情况:我有一个基于Java和Hibernate的工具,我完成了一项任务,将一些区域从旧DB表(SchemaOLD.TableOLD)迁移到新表(SchemaNEW.TableNEW)(所有这些都发生在同一个DB服务器上)。事情已经接近完成,但我发现一些遗留的第三方组件仍然指向原始位置(SchemaOLD.TableOLD)。由于一些业务限制,我不得不寻找更快的替代解决方案(而不是让其他组件也迁移…) 我需要以某种方式使DB服务器将SchemaOL

是否可以为现有表创建指向其他现有表的别名或同义词

情况:我有一个基于Java和Hibernate的工具,我完成了一项任务,将一些区域从旧DB表(
SchemaOLD.TableOLD
)迁移到新表(
SchemaNEW.TableNEW
)(所有这些都发生在同一个DB服务器上)。事情已经接近完成,但我发现一些遗留的第三方组件仍然指向原始位置(
SchemaOLD.TableOLD
)。由于一些业务限制,我不得不寻找更快的替代解决方案(而不是让其他组件也迁移…)

我需要以某种方式使DB服务器将
SchemaOLD.TableOLD
字符串“解析”为新的
SchemaNEW.TableNEW
,以便这些旧组件在实际从新位置检索数据时不会受到干扰。我需要在数据库中仍然存在旧表和新表时执行此操作

这有可能吗? 最好的解决方案是什么,别名还是同义词?这两者之间的区别对我来说有点不清楚


谢谢。

如果您想使用或,那么您应该使用
别名。以下是
同义词
知识中心页面的注释:

重要:使用别名而不是同义词。同义词 与别名类似,但仅在与兼容的情况下才支持 以前的版本。同义词可能在将来的版本中不可用 DB2®。同义词在DB2forz/OS®中的行为与在 其他DB2系列产品。编写新SQL时不要使用同义词 语句或创建可移植应用程序时

另一个选择是:


如果您还需要防止旧的实用程序更新“新”表,您可以考虑在该视图上使用新的。可能是一个愚蠢的答案/问题:但是为什么不迁移,然后将新的重命名为旧的?它是这样的:-我做了迁移;现在我的工具从新位置读取我有那些旧的遗留组件,它们仍然在处理旧组件的数据。我需要:让旧的遗留组件从新位置读取数据,而不改变它们。因此,需要以某种方式将旧字符串“解析”为新字符串。谢谢,了解你写的关于别名和同义词的内容非常有用。关于视图建议,在
SchemaOLD.TableOLD
位置仍然存在的情况下,这样做是否有效?名为
SchemaOLD.TableOLD
的视图和表将同时存在于数据库中……这是不可能的。这是因为:[视图名称]不能标识当前服务器上存在的表、视图、别名或同义词。。。。别名也是如此。我想您必须花一些时间来删除SchemaOLD.TableOLD表。还有一个命令,因此您可以将旧表重命名为其他名称,然后创建视图
RENAME
很快,因为它基本上只更新该表的目录信息。
CREATE VIEW SchemaOLD.TableOLD AS
    SELECT * FROM SchemaNEW.TableNEW