【发布时间】:2018-10-03 07:19:27
【问题描述】:
我正在使用 DB2 version7.1 并尝试查询主键列名来满足我的一项要求。我尝试使用谷歌搜索,但找不到任何与 DB2 7.1 相关的内容。
我对 DB2 了解不多,因此寻求帮助以从 BD2 版本 7.1 中查找主键列。期待在这方面提供积极的帮助。
【问题讨论】:
我正在使用 DB2 version7.1 并尝试查询主键列名来满足我的一项要求。我尝试使用谷歌搜索,但找不到任何与 DB2 7.1 相关的内容。
我对 DB2 了解不多,因此寻求帮助以从 BD2 版本 7.1 中查找主键列。期待在这方面提供积极的帮助。
【问题讨论】:
如果您按照问题上的 db2-400 标记的建议使用 Db2 for i-Series(以前称为 AS/400),请检查目录 QSYS2.SYSCST - 它有一个 CONSTRAINT_TYPE 列,其值为“P”为主键。您可能需要加入其他目录对象(例如 QSYS2.SYSTABLES、QSYS2.SYSCOLUMNS),具体取决于您所寻求的详细信息。
Db2 for i series R7.1 的知识中心仍然是 online。
【讨论】:
根据应用程序的年龄,您可能无法在 SQL 目录中找到它。不幸的是,许多(大多数?)RPG 应用程序没有使用 DB2 数据库的全部功能,包括索引、视图和约束。这变化缓慢,但很可能您将不得不寻找具有唯一键的逻辑文件。可能没有定义主键。您可以在 SQL 目录中查找,但如果找不到您要查找的内容,则以下内容更有可能有所帮助。
使用DSPDBR <table name> 查找与物理文件(表)关联的逻辑文件。如果您不知道命令行应该是什么样子,可以按 F4 提示输入参数。
确定逻辑文件是否具有唯一键的另一种方法是使用DSPFD <logical file> 命令。然后在结果屏幕中搜索“唯一”。屏幕应如下所示:
Unique key values required . . . . . . . . : UNIQUE Yes 行表示逻辑文件包含唯一键。以下行Select/omit specified . . . . . . . . . . . : No表示逻辑文件中没有记录选择逻辑,所以包含了物理文件中的所有记录。底部的行按顺序显示关键字段。这与使用逻辑文件可以获得的主键一样接近。由于与物理文件相关的每个逻辑文件都可以有一个唯一的键,因此大多数应用程序将使用命名来识别哪个是主键,有时这将是文件名上的 L00 或 L01 后缀。
更复杂的是,物理文件本身可以被唯一地键入。您也可以查看源代码或使用DSPFD <physical file> 来确定。
这些是关于 DB2 for i 的一些独特的东西,在其他风格的 DB2 中是不可用的。而且,过去 RPG 程序员只使用物理和逻辑文件,而不是 DB2 数据库的 SQL 特性。
【讨论】: