如何在DB2IBMiSeries中编辑视图而不是删除视图,然后重新创建它?

如何在DB2IBMiSeries中编辑视图而不是删除视图,然后重新创建它?,db2,ibm-midrange,Db2,Ibm Midrange,如何通过SystemiNavigator在DB2中更改或编辑视图?我不知道怎么做,因为它会删除构建在它上面的其他视图。使用iSeries Navigator无法更改视图。但是,如果您愿意使用SQL语句,并且使用v7.1或更高版本,则可以使用新的“创建或替换视图”命令: 这将允许您更改现有视图,而无需首先删除依赖对象。例如,考虑一个名为“VIEW2”的视图,它从“VIEW1”中调用名为“DESC”的列。可以使用以下命令在不影响“VIEW2”的情况下向“VIEW1”添加列: CREATE OR RE

如何通过SystemiNavigator在DB2中更改或编辑视图?我不知道怎么做,因为它会删除构建在它上面的其他视图。

使用iSeries Navigator无法更改视图。但是,如果您愿意使用SQL语句,并且使用v7.1或更高版本,则可以使用新的“创建或替换视图”命令:

这将允许您更改现有视图,而无需首先删除依赖对象。例如,考虑一个名为“VIEW2”的视图,它从“VIEW1”中调用名为“DESC”的列。可以使用以下命令在不影响“VIEW2”的情况下向“VIEW1”添加列:

CREATE OR REPLACE VIEW MYSCHEMA.VIEW1 AS
    SELECT DESC, NEWCOL FROM MYSCHEMA.MYTABLE;
类似地,可以从“VIEW1”中删除列,而不影响其他视图。唯一的限制是不能删除另一个视图(或函数、别名等)使用的列。如果尝试删除另一个视图依赖的列,则会收到错误消息

使用“替换”方法还将保留任何权限/安全约束


应该注意的是,更理想的方法是通过脚本自动创建视图/函数/过程/别名等。这将允许您以一致的方式删除和重新创建依赖对象。这假定数据库管理实现某种程度的自动化,如果有大量依赖对象(如果有大量索引视图),则可能会出现问题。大量“替换”脚本的最大风险是它们将被错误应用,要么不应用其中一个脚本,要么以错误的顺序应用它们。

更改/编辑什么?目录?模式?一个“视图”。这就是它们在DB2中的命名方式。它们是保存为表的查询,但名称为“视图”。很抱歉,错过了“视图”部分。我查看了我的iNav副本,看不到编辑视图的方法。您可能想查看今天的网络广播,COMMON正在介绍如何使用System i Navigator。。。您知道:在数据库中,您可以拥有视图、表、函数和其他内容。为什么不删除并重建它呢?您的问题涉及“基于该视图构建的其他视图”,但您不能基于某个视图创建视图(如果可以,iSeries不会允许您删除基于该视图的视图)。但是否会删除基于该视图的视图?我添加了一些附加信息,以澄清“替换”是如何创建的命令会影响其他视图。再次删除和创建的问题是,我们必须再次设置权限,并且内部名称会更改。例如,一个名为bla_bla_bla的视图被截断为bla_0001。下一次您删除并创建的内容将是bla_0002,其他内容将不起作用anymore@Totty.js在CREATE语句中添加FOR SYSTEM NAME子句[如果在所使用的DB2forIBMi发行版上可用;在OP中似乎没有说明],以显式地分配所需的系统名(又称短名)。