如何识别 DB2 7.1 版中的主键列
How to identify primary key column in DB2 version 7.1
我正在使用 DB2 version7.1 并尝试查询主键列名称以满足我的要求之一。我尝试使用谷歌搜索,但无法获得与 DB2 7.1 相关的任何信息。
我对 DB2 了解不多,因此寻求帮助以从 BD2 7.1 版中查找主键列。期待对此的积极帮助。
如果您按照问题中的 db2-400 标签的建议使用 i 系列的 Db2(以前称为 AS/400),请检查目录 QSYS2.SYSCST - 它有一个列 CONSTRAINT_TYPE 主键的值为 'P'。您可能需要加入其他目录对象(例如 QSYS2.SYSTABLES、QSYS2.SYSCOLUMNS),具体取决于您所寻找内容的详细信息。
i 系列 R7.1 的 Db2 知识中心仍然是 online。
根据应用程序的年龄,您可能无法在 SQL 目录中找到它。不幸的是,许多(大多数?)RPG 应用程序没有使用 DB2 数据库的全部功能,包括索引、视图和约束。这正在缓慢变化,但很可能您将不得不寻找具有唯一键的逻辑文件。可能没有定义主键。您可以在 SQL 目录中查找,但如果找不到您要查找的内容,以下内容更有可能提供帮助。
使用 DSPDBR <table name>
查找与物理文件 (table) 关联的逻辑文件。如果不知道命令行应该是什么样子,可以按F4提示输入参数。
如果你能找到逻辑文件的来源(可能在源文件 QDDSSRC 中),检查它,如果它在记录格式行上方有关键字 UNIQUE
,那么这个可以被认为是主键,或者至少是唯一键。确保源底部没有记录选择。可以有多个这样的逻辑文件。
另一种确定逻辑文件是否具有唯一键的方法是使用DSPFD <logical file>
命令。然后在结果屏幕中搜索 'Unique'。屏幕应如下所示:
File . . . . . : QPDSPFD
Control . . . . . __________
Find . . . . . . Unique
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7..
Access path maintenance . . . . . . . . . . : MAINT *IMMED
Unique key values required . . . . . . . . : UNIQUE Yes
Select/omit specified . . . . . . . . . . . : No
Access path journaled . . . . . . . . . . . : No
Access path . . . . . . . . . . . . . . . . : Keyed
Number of key fields . . . . . . . . . . . : 3
Record format . . . . . . . . . . . . . . . : JCNCXR
Key field . . . . . . . . . . . . . . . . : XFNCMNO
Sequence . . . . . . . . . . . . . . . : Ascending
Sign specified . . . . . . . . . . . . : SIGNED
Zone/digit specified . . . . . . . . . : *NONE
Alternative collating sequence . . . . : No
Key field . . . . . . . . . . . . . . . . : XFJOBYR
Sequence . . . . . . . . . . . . . . . : Ascending
Sign specified . . . . . . . . . . . . : SIGNED
Zone/digit specified . . . . . . . . . : *NONE
Alternative collating sequence . . . . : No
Key field . . . . . . . . . . . . . . . . : XFJOBNO
Sequence . . . . . . . . . . . . . . . : Ascending
行Unique key values required . . . . . . . . : UNIQUE Yes
表示逻辑文件包含唯一键。下面这行Select/omit specified . . . . . . . . . . . : No
表示逻辑文件中没有记录选择逻辑,所以它包含了物理文件中的所有记录。底部的行按顺序显示关键字段。这与逻辑文件所能获得的最接近主键。由于与物理文件相关的每个逻辑文件都可以有一个唯一的键,大多数应用程序将使用命名来识别哪个是主键,有时这将是文件名上的 L00 或 L01 后缀。
更复杂的是,物理文件本身可以被唯一地键入。您也可以查看源代码或使用 DSPFD <physical file>
来确定。
这些是关于 DB2 for i 的一些独特之处,在其他 DB2 版本中是没有的。而且,过去 RPG 程序员只使用物理和逻辑文件,而不是 DB2 数据库的 SQL 性质。
我正在使用 DB2 version7.1 并尝试查询主键列名称以满足我的要求之一。我尝试使用谷歌搜索,但无法获得与 DB2 7.1 相关的任何信息。
我对 DB2 了解不多,因此寻求帮助以从 BD2 7.1 版中查找主键列。期待对此的积极帮助。
如果您按照问题中的 db2-400 标签的建议使用 i 系列的 Db2(以前称为 AS/400),请检查目录 QSYS2.SYSCST - 它有一个列 CONSTRAINT_TYPE 主键的值为 'P'。您可能需要加入其他目录对象(例如 QSYS2.SYSTABLES、QSYS2.SYSCOLUMNS),具体取决于您所寻找内容的详细信息。
i 系列 R7.1 的 Db2 知识中心仍然是 online。
根据应用程序的年龄,您可能无法在 SQL 目录中找到它。不幸的是,许多(大多数?)RPG 应用程序没有使用 DB2 数据库的全部功能,包括索引、视图和约束。这正在缓慢变化,但很可能您将不得不寻找具有唯一键的逻辑文件。可能没有定义主键。您可以在 SQL 目录中查找,但如果找不到您要查找的内容,以下内容更有可能提供帮助。
使用
DSPDBR <table name>
查找与物理文件 (table) 关联的逻辑文件。如果不知道命令行应该是什么样子,可以按F4提示输入参数。如果你能找到逻辑文件的来源(可能在源文件 QDDSSRC 中),检查它,如果它在记录格式行上方有关键字
UNIQUE
,那么这个可以被认为是主键,或者至少是唯一键。确保源底部没有记录选择。可以有多个这样的逻辑文件。另一种确定逻辑文件是否具有唯一键的方法是使用
DSPFD <logical file>
命令。然后在结果屏幕中搜索 'Unique'。屏幕应如下所示:
File . . . . . : QPDSPFD Control . . . . . __________ Find . . . . . . Unique *...+....1....+....2....+....3....+....4....+....5....+....6....+....7.. Access path maintenance . . . . . . . . . . : MAINT *IMMED Unique key values required . . . . . . . . : UNIQUE Yes Select/omit specified . . . . . . . . . . . : No Access path journaled . . . . . . . . . . . : No Access path . . . . . . . . . . . . . . . . : Keyed Number of key fields . . . . . . . . . . . : 3 Record format . . . . . . . . . . . . . . . : JCNCXR Key field . . . . . . . . . . . . . . . . : XFNCMNO Sequence . . . . . . . . . . . . . . . : Ascending Sign specified . . . . . . . . . . . . : SIGNED Zone/digit specified . . . . . . . . . : *NONE Alternative collating sequence . . . . : No Key field . . . . . . . . . . . . . . . . : XFJOBYR Sequence . . . . . . . . . . . . . . . : Ascending Sign specified . . . . . . . . . . . . : SIGNED Zone/digit specified . . . . . . . . . : *NONE Alternative collating sequence . . . . : No Key field . . . . . . . . . . . . . . . . : XFJOBNO Sequence . . . . . . . . . . . . . . . : Ascending
行Unique key values required . . . . . . . . : UNIQUE Yes
表示逻辑文件包含唯一键。下面这行Select/omit specified . . . . . . . . . . . : No
表示逻辑文件中没有记录选择逻辑,所以它包含了物理文件中的所有记录。底部的行按顺序显示关键字段。这与逻辑文件所能获得的最接近主键。由于与物理文件相关的每个逻辑文件都可以有一个唯一的键,大多数应用程序将使用命名来识别哪个是主键,有时这将是文件名上的 L00 或 L01 后缀。
更复杂的是,物理文件本身可以被唯一地键入。您也可以查看源代码或使用 DSPFD <physical file>
来确定。
这些是关于 DB2 for i 的一些独特之处,在其他 DB2 版本中是没有的。而且,过去 RPG 程序员只使用物理和逻辑文件,而不是 DB2 数据库的 SQL 性质。