[db2-as400]我有一个表ENR_DATA
,它有列EnrollmentID
作为主键。这个列被许多表格称为“外键”。有没有办法列出所有引用表的ENR_DATA
表的表?DB2找到引用我的表的表
回答
有几个目录视图,每个只给出答案的一部分,你必须将它们连接在一起。
- SYSCST提供了约束类型的约束列表。从这里我们可以选择外键约束。此表中的TABLE_NAME是包含外键的表。
- 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_DATA”表名。注意我的ENROLLMENTID全部大写。这就是DB2 for i存储所有列名称的方式,除非使用“”引用它们。
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以查找详细信息。
我查询了两个表。我可以看到这些限制,但我无法将它们彼此联系起来。我有表PRIMARYTABLE(EMPID是主键)和OTHERTABLE(EMPID是指EPMID/PRIMARYTABLE的列)。查询SYSCST和SYSCSTCOL只是提供有关约束EPMID_PK和OTHER_FK的信息。它不会给出OTHERTABLE指的是主要信息(EMPID)。请让我知道如果我失去了一些东西。 – uSeruSher
我没有用于测试的系统,但还有另一个表:SYSCSTDEP。它记录了依赖关系。 http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/db2/rbafzcatsyscstdep.htm –
也试过这个。没有去:( – uSeruSher
- 1. 找到DB2中的所有空表
- 2. 如何查找DB2中的表中可用的所有索引
- 3. 将oracle表复制到DB2
- 4. 找到列表的最小索引
- 5. 的OutputStream到DB2数据库表
- 6. SAS临时DB2表 - 创建索引
- 7. 我们如何找到没有任何索引的表格(PostgreSQL)
- 8. 我如何找到表中的行索引
- 9. DB2外部表?
- 10. DB2关系表
- 11. Kohana的ORM找不到我的表
- 12. 如何将单引号字符串插入到DB2表中?
- 13. 节省FK值引用的查找表
- 14. ibm db2 net driver sql错误。没有找到表名?
- 15. 我如何找到当前的代表?
- 16. 如何查找DB2中表的主键的名称和值
- 17. 使用列表元素的总和查找列表的索引
- 18. DB2:如何查找列表是否存在于表格或表格列表中?
- 19. 找不到FULLTEXT索引匹配列的列表(索引设置)
- 20. DB2递归UDF表
- 21. 旋转表DB2 SQL
- 22. 树木和DB2表
- 23. DB2表名全称
- 24. 从列表中找到索引
- 25. 在db2中的多个表空间中创建索引
- 26. 错误:找不到主表的引用字段的唯一索引
- 27. 如何找到表中的某个行索引使用jquery
- 28. DB2审计 - 加载到审计表
- 29. DB2 - 查找并比较表格字段中值的长度
- 30. 未找到引用xsl样式表时的默认浏览器xml样式表?
这就是我需要感谢的一吨! – uSeruSher