数据库中必须有一些其他对象,例如触发器或视图,引用了删除的表。 DB2 在引用该对象时尝试重新验证该对象。如果您跟踪持久性框架生成的确切 SQL 语句,您可能会更好地了解正在发生的事情。
如果由于某种原因您无法让 DB2 找出有问题的对象,您可以尝试使用此查询来查找哪些其他对象仍然依赖于丢失的表:
with t(s,n) as (values ('YOURSCHEMA','YOURTABLE'))
select 'control' as object_type,
dschema as schema,
dname as name,
case dtype when 'y' then 'row permission' when '2' then 'column mask' else 'unknown' end as depend_type
from syscat.controldep join t on btype = 'T' and (bschema,bname) = (s,n)
union all
select 'datatype' as object_type,
typeschema as schema,
typename as name,
case when typemodulename is not null then 'in module '|| typemodulename else '' end as depend_type
from syscat.datatypedep join t on btype = 'T' and (bschema,bname) = (s,n)
union all
select 'index' as object_type,
indschema as schema,
indname as name,
'' as depend_type
from syscat.indexdep join t on btype = 'T' and (bschema,bname) = (s,n)
union all
select 'package' as object_type,
pkgschema as schema,
pkgname as name,
'' as depend_type
from syscat.packagedep join t on btype = 'T' and (bschema,bname) = (s,n)
union all
select 'routine' as object_type,
routineschema as schema,
specificname as name,
case when routinemodulename is not null then 'in module '|| routinemodulename else '' end as depend_type
from syscat.routinedep join t on btype = 'T' and (bschema,bname) = (s,n)
union all
select 'table-ish' as object_type,
tabschema as schema,
tabname as name,
case dtype when 'S' then 'MQT'
when 'T' then 'staging table'
when 'V' then 'view'
when '7' then 'synopsis table'
else dtype end as depend_type
from syscat.tabdep join t on btype = 'T' and (bschema,bname) = (s,n)
union all
select 'trigger' as object_type,
trigschema as schema,
trigname as name,
'' as depend_type
from syscat.trigdep join t on btype = 'T' and (bschema,bname) = (s,n)
union all
select 'global var' as object_type,
varschema as schema,
varname as name,
case when varmodulename is not null then 'in module '|| varmodulename else '' end as depend_type
from syscat.variabledep join t on btype = 'T' and (bschema,bname) = (s,n)