DB2 等效于 CREATE FORCE VIEW
DB2 equivalent for CREATE FORCE VIEW
我正在将 MaxDB 数据库迁移到 DB2。我需要重新创建所有视图,但它们的定义包含对其他视图的引用并且具有相同的创建日期和时间,因此我无法以正确的顺序创建它们。
DB2 是否以某种方式支持 CREATE FORCE VIEW
语句?
如何以正确的顺序重新创建视图(不创建 SQL 解析器 - 因为我只有来自 MAXDB 的数据字典的视图的字符串定义)?
SELECT 对于 MaxDB:
select vd.*, t.createdate, t.createtime from viewdefs vd
join tables t on vd.viewname = t.tablename and vd.owner = t.owner
order by t.createdate, t.createtime
您没有说明您使用的是什么 DB2 平台。 DB2 for LUW 具有 database configuration parameter auto_reval
,当设置为 deferred
(默认值)或 deferred_force
时,您可以按任何顺序创建依赖对象。在 deferred_force
中,由于缺少依赖项而无法在创建时验证的有效对象(包括视图)将被创建 "with error" 并在它们首次在 SQL 语句中使用时重新验证。
您还可以在创建无效对象后通过调用 system stored procedure SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()
.
显式重新验证它们
我正在将 MaxDB 数据库迁移到 DB2。我需要重新创建所有视图,但它们的定义包含对其他视图的引用并且具有相同的创建日期和时间,因此我无法以正确的顺序创建它们。
DB2 是否以某种方式支持 CREATE FORCE VIEW
语句?
如何以正确的顺序重新创建视图(不创建 SQL 解析器 - 因为我只有来自 MAXDB 的数据字典的视图的字符串定义)?
SELECT 对于 MaxDB:
select vd.*, t.createdate, t.createtime from viewdefs vd
join tables t on vd.viewname = t.tablename and vd.owner = t.owner
order by t.createdate, t.createtime
您没有说明您使用的是什么 DB2 平台。 DB2 for LUW 具有 database configuration parameter auto_reval
,当设置为 deferred
(默认值)或 deferred_force
时,您可以按任何顺序创建依赖对象。在 deferred_force
中,由于缺少依赖项而无法在创建时验证的有效对象(包括视图)将被创建 "with error" 并在它们首次在 SQL 语句中使用时重新验证。
您还可以在创建无效对象后通过调用 system stored procedure SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()
.