Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DB2查找引用我的表的表_Db2_Ibm Midrange_Db2 400 - Fatal编程技术网

DB2查找引用我的表的表

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提供约束

[db2-as400]我有一个表
ENR_DATA
,其中列
EnrollmentID
作为主键。许多表将此列称为“外键”。有没有一种方法可以列出所有引用
ENR\u DATA
表的
EnrollmentID
的表?

DB2onIBMi(AS400)提供了一个。它是存储元数据的地方。作为其中一个视图,该视图包含有关约束列的信息,并存储依赖项


因此,您可以查询SYSCST、SYSCSTCOL和SYSCSTDEP以查找详细信息。

有几个目录视图,每个视图只给出部分答案,您必须将它们全部合并在一起

  • SYSCST提供约束类型为的约束列表。从这里我们可以选择外键约束。此表中的表名称是包含外键的表
  • SYSKEYCST提供给定外键、主键或唯一约束的列列表,以及列在键中的顺序位置和关联的表名
  • SYSREFCST提供给定外键约束引用的主键约束或唯一键约束的名称
从这三个表中,我们可以编写以下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_数据”的表名。注意:我的ENROLLMENTID全部大写。这就是DB2fori存储所有列名的方式,除非使用“.”引用列名。

我查询了这两个表。我可以看到这些限制,但我无法将它们相互联系起来。我有表PRIMARYTABLE(EMPID是主键)和OTHERTABLE(EMPID是引用EPMID/PRIMARYTABLE的列)。查询SYSCST和SYSCSTCOL只提供关于约束EPMID_PK和其他_FK的信息。它不提供OTHERTABLE引用PRIMARYTABLE(EMPID)的信息。如果我遗漏了什么,请告诉我。我没有用于测试的系统,但还有另一个表:SYSCSTDEP。它记录依赖关系。我也试过这个。禁止:(你确定有定义为引用约束的FK关系吗?是的,我自己创建了表