[db2-as400]我有一个表ENR_DATA
,其中列EnrollmentID
为主键。此列被许多表称为“外键”。有没有办法列出所有引用EnrollmentID
ENR_DATA
表{?}}的表格?
答案 0 :(得分:2)
有一些目录视图,每个视图只给出答案的一部分,你必须将它们全部加在一起。
从这三个表中我们可以编写以下SQL:
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_DATA'通过外键。注意我的大写都是ENROLLMENTID。这就是DB2 for i存储所有列名的方式,除非使用""。
引用它们答案 1 :(得分:1)
IBM i上的DB2(AS 400)提供list of all system tables, the system catalog。它是存储元数据的地方。其中一个视图SYSCST, is the view with all constraints,视图SYSCSTCOL包含有关约束列的信息,SYSCSTDEP存储依赖关系。
因此,您将查询SYSCST,SYSCSTCOL和SYSCSTDEP以查找详细信息。