DB2查找引用我的表的表
[db2-as400]我有一个表DB2查找引用我的表的表,db2,ibm-midrange,db2-400,Db2,Ibm Midrange,Db2 400,[db2-as400]我有一个表ENR_DATA,其中列EnrollmentID作为主键。许多表将此列称为“外键”。有没有一种方法可以列出所有引用ENR\u DATA表的EnrollmentID的表?DB2onIBMi(AS400)提供了一个。它是存储元数据的地方。作为其中一个视图,该视图包含有关约束列的信息,并存储依赖项 因此,您可以查询SYSCST、SYSCSTCOL和SYSCSTDEP以查找详细信息。有几个目录视图,每个视图只给出部分答案,您必须将它们全部合并在一起 SYSCST提供约束
ENR_DATA
,其中列EnrollmentID
作为主键。许多表将此列称为“外键”。有没有一种方法可以列出所有引用ENR\u DATA
表的EnrollmentID
的表?DB2onIBMi(AS400)提供了一个。它是存储元数据的地方。作为其中一个视图,该视图包含有关约束列的信息,并存储依赖项
因此,您可以查询SYSCST、SYSCSTCOL和SYSCSTDEP以查找详细信息。有几个目录视图,每个视图只给出部分答案,您必须将它们全部合并在一起
- SYSCST提供约束类型为的约束列表。从这里我们可以选择外键约束。此表中的表名称是包含外键的表
- SYSKEYCST提供给定外键、主键或唯一约束的列列表,以及列在键中的顺序位置和关联的表名
- SYSREFCST提供给定外键约束引用的主键约束或唯一键约束的名称
select cst.constraint_schema, cst.constraint_name,
fk.table_schema, fk.table_name, fk.ordinal_position, fk.column_name,
pk.table_schema, pk.table_name, pk.column_name
from qsys2.syscst cst
join qsys2.syskeycst fk
on fk.constraint_schema = cst.constraint_schema
and fk.constraint_name = cst.constraint_name
join qsys2.sysrefcst ref
on ref.constraint_schema = cst.constraint_schema
and ref.constraint_name = cst.constraint_name
join qsys2.syskeycst pk
on pk.constraint_schema = ref.unique_constraint_schema
and pk.constraint_name = ref.unique_constraint_name
where cst.constraint_type = 'FOREIGN KEY'
and fk.ordinal_position = pk.ordinal_position
and pk.table_name = 'ENR_DATA'
and pk.column_name = 'ENROLLMENTID'
order by cst.constraint_schema, cst.constraint_name;
这将获得通过外键引用“ENR_数据”的表名。注意:我的ENROLLMENTID全部大写。这就是DB2fori存储所有列名的方式,除非使用“.”引用列名。我查询了这两个表。我可以看到这些限制,但我无法将它们相互联系起来。我有表PRIMARYTABLE(EMPID是主键)和OTHERTABLE(EMPID是引用EPMID/PRIMARYTABLE的列)。查询SYSCST和SYSCSTCOL只提供关于约束EPMID_PK和其他_FK的信息。它不提供OTHERTABLE引用PRIMARYTABLE(EMPID)的信息。如果我遗漏了什么,请告诉我。我没有用于测试的系统,但还有另一个表:SYSCSTDEP。它记录依赖关系。我也试过这个。禁止:(你确定有定义为引用约束的FK关系吗?是的,我自己创建了表